¿Cómo usar “fgets” después de usar “fgetc”?
Estoy tratando de escribir un programa específico que lee datos de un archivo, pero me di cuenta de que cuando leo el archivo con fgetc, si uso fgets más tarde, no tiene ninguna salida.
Por ejemplo, este código:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE * arq = fopen(“arquivo.txt”, “r”);
char enter = fgetc(arq);
int line_count = 1;
while(enter != EOF) {
if (enter == '\n') line_count++;
enter = fgetc(arq);
}
printf("%d", line_count);
char str[128];
while(fgets(str, 128, arq)) printf("%s", str);
}
el segundo while no imprime nada, pero si elimino el primer while, el código imprime el contenido del archivo, ¿por qué sucede eso?
davy.ai
Esto está sucediendo porque
fgetc
lee el archivo carácter por carácter y mueve el puntero del archivo al siguiente carácter cada vez que se llama. Cuando se llega al final del archivo, el puntero del archivo está al final del archivo yfgets
no podrá leer nada. Para solucionarlo, necesitas restablecer el puntero del archivo al inicio del archivo usandofseek
antes de llamar afgets
: