[ Foro de C ]
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!
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.)