[ Foro de C ]

Manejo de Ficheros: Ej.6.3.ii. Consulta.

04-Jul-2012 04:30
Pablo Rampa
1 Respuestas

Gracias a quien me pueda ayudar.

Ej.6.3.ii_ Un programa que pregunte un nombre de fichero y muestre en pantalla el contenido de ese
fichero, haciendo una pausa después de cada 25 líneas, para que dé tiempo a leerlo. Cuando el usua-
rio pulse intro, se mostrarán las siguientes 25 líneas, y así hasta que termine el fichero.  

Si no malentiendo el enunciado, se necesita un programa que:
1.-Pida el nombre de un fichero existente, entre otros.
2.-Abra en modo lectura tal fichero y lo muestre en tandas de 25
  líneas, hasta el final, con sólo pulsar "Intro".

No encuentro la manera de vincular el nombre del archivo introducido con FILE *puntero.

 Esto es lo que he hecho:


#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
 
  FILE *ficheroU;    /* Cómo establecer este buffer? */  
  char nombreFichero[10];
  char frase[61];
  int i;
 
  printf ("Escriba el nombre del fichero a leer: ");          
  scanf ("%s", nombreFichero);
  getchar();                            
 
/* Cómo relacionar el nombre introducido con el nombre del fichero? */
                                               
ficheroU = fopen ("frases.txt", "rt");                    
  while (!feof(ficheroU))
  {    
     for(i=0; i<25; i++)
     {
        fgets(frase, 60, ficheroU);  
        puts(frase);
     }          
     getchar();    
  }
  fclose(ficheroU);
  return 0;
}

     
 .....Saludos!    


04-Jul-2012 11:07
Rudi Merlos Carrion

Hola Pablo.

El error se encuentra en la linea 19:

ficheroU = fopen("frases.txt", "rt");

Aquí estas condenando al programa a abrir siempre el fichero "frases.txt".

Prueba con:

ficheroU = fopen(nombreFichero, "rt");

ya que para eso has escaneado el nombre del fichero.

Aquí mi código, espero que te sirva de ayuda:

//Lectura de fichero en fragmentos de 25 lineas
#include <stdio.h>
#include <stdlib.h>

main(){
   
   FILE* fichero;
   char linea[100], nombre[40];
   int i;
   
   printf("Nombre de fichero: ");
   gets(nombre);
   
   fichero = fopen(nombre, "rt");
   
   if (fichero == NULL){
       printf("No existe el fichero\n");
       exit(1);
   }
   
   while (!feof(fichero)){
       
       for (i=0; i<25; i++){
           fgets(linea, 100, fichero);
           if (!feof(fichero))
               fputs(linea, stdout);
       }
       getchar();        
   }
   
   fclose(fichero);
   
   return 0;
}

Saludos!!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)