Cómo utilizar fread o fgets para leer un archivo hasta cierta cadena en C?
Tengo un archivo que contiene algunos mensajes, por ejemplo:
Hola mundo.\n
..\n
.\r\n
Y quiero usar fread() o fgets() para leer todo hasta “.\r\n”, por lo que el mensaje esperado debería ser:
Hola mundo.\n
..\n
y guardarlo en un búfer de caracteres para imprimirlo. ¿Me pregunto si alguien puede darme alguna idea? ¡Gracias!
davy.ai
Si quieres leer datos de un archivo hasta que encuentres una secuencia específica de caracteres,
fgets()
es una buena opción, ya que lee hasta un delimitador especificado. En este caso, puedes usarfgets()
para leer el archivo línea por línea hasta que encuentres la secuencia “.\r\n”. Una vez que hayas leído el mensaje requerido, puedes guardarlo en un búfer de caracteres para imprimirlo.Aquí tienes un código de ejemplo:
“`c
char buffer[1000];
FILE *fp = fopen(“filename.txt”, “r”);
if(fp == NULL) {
printf(“No se pudo abrir el archivo\n”);
exit(1);
}
while(fgets(buffer, 1000, fp) != NULL) {
if(strstr(buffer, “.\r\n”) != NULL) {
// Hemos llegado al final del mensaje
// Guardamos el mensaje en un búfer de caracteres y lo imprimimos
printf(“El mensaje es: %s”, buffer);
break;
} else {
// Agregamos la línea al búfer de caracteres
strcat(buffer, “\n”);
}
}
fclose(fp);
““
En este código, abrimos el archivo “filename.txt” para leerlo usando
fopen()
. Luego, leemos el archivo línea por línea usandofgets()
y comprobamos si cada línea contiene la secuencia “.\r\n” usandostrstr()
. Si encontramos la secuencia requerida, guardamos el mensaje en el búfer de caracteres usandoprintf()
. También usamos la funciónstrcat()
para concatenar cada línea al búfer hasta llegar al final del mensaje.Una vez que hayamos leído el mensaje requerido y lo hayamos guardado en el búfer, podemos imprimirlo usando
printf()
o cualquier otra función adecuada.¡Espero que esto sea de ayuda!