Cómo leer un archivo línea por línea en lenguaje C
En lenguaje C, puedes utilizar la función fgets para leer archivos línea por línea.
1. función fgets:
Prototipo: char
*
fgets(char
* p>
buf,
int
bufsize,
FILE
*
stream);
Función: Lee datos del flujo de puntero de estructura de archivos, una línea a la vez.
Nota: Los datos leídos se almacenan en la matriz de caracteres señalada por buf, y se pueden leer hasta caracteres bufsize-1 cada vez (al carácter bufsize-ésimo se le asigna un valor de \0). Si la línea tiene menos de caracteres bufsize, terminará después de leer la línea. Si la línea excede los caracteres bufsize-1, fgets solo devolverá una línea incompleta y el búfer buf terminará con \0 caracteres. Continúe leyendo los caracteres restantes de la línea;
Archivo de encabezado: stdio.h;
Valor de retorno: si la lectura se realiza correctamente, se devuelve el mismo puntero de carácter que el parámetro buf Si se produce EOF o un error durante el proceso, se devuelve un puntero NULL. Entonces, cuando encuentre una situación en la que el valor de retorno sea NULL, debe usar la función ferror o feof para verificar si ocurrió un error o si se encontró EOF.
2. Rutina:
#include
int a;
char b, c[100]
int main(){
ARCHIVO * fp1 = fopen("input.txt", "r"); //Abre el archivo de entrada
ARCHIVO * fp2 = fopen( "output.txt", "w"); //Abrir el archivo de salida
if (fp1==NULL || fp2==NULL) {//Salir si falla la apertura del archivo
puts("¡No se puede abrir el archivo!");
rturn 0;
}
fscanf(fp1, "d", amp; a) ; //Leer un número entero del archivo de entrada
b=fgetc(fp1); //Leer un carácter del archivo de entrada
fgets(c, 100, fp1); / Lee una línea de cadena del archivo de entrada
printf("ld", ftell(fp1) // Muestra el número de bytes de desplazamiento de la posición actual del puntero fp1 en relación con el comienzo de el archivo
fputs(c, fp2); //Escribe una línea de cadena en el archivo de salida
fputc(b, fp2); //Escribe un carácter en el archivo de salida.
fprintf( fp2, "d", a); //Escribe un número entero en el archivo de salida
fclose(fp1); //Cierra el archivo de entrada
fclose(fp2); //Cerrar el archivo de salida, equivalente a guardar
return 0;
}