Quiero leer en un archivo línea por línea, sin conocer la longitud de la línea anterior. Esto es lo que tengo hasta ahora:Leer línea desde archivo sin conocer la longitud de la línea
int ch = getc(file);
int length = 0;
char buffer[4095];
while (ch != '\n' && ch != EOF) {
ch = getc(file);
buffer[length] = ch;
length++;
}
printf("Line length: %d characters.", length);
char newbuffer[length + 1];
for (int i = 0; i < length; i++)
newbuffer[i] = buffer[i];
newbuffer[length] = '\0'; // newbuffer now contains the line.
ahora puedo averiguar la longitud de la línea, pero sólo para las líneas que son más cortas que 4095 caracteres, además de las dos matrices de char parecer una manera incómoda de hacer la tarea. ¿Hay alguna forma mejor de hacerlo (ya he usado fgets() pero me dijeron que no era la mejor manera)?
--Ry
Es 'realloc' not' relloc'. –
Al igual que una nota, la lectura carácter por carácter es extremadamente lenta. Debe leerlo en trozos grandes (4-16k). – Blindy
@Blindy: optimización prematura ... –