Chcę czytać wiersz po wierszu, nie znając długości linii przed. Oto co mam do tej pory:Odczytaj wiersz z pliku, nie znając długości linii
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.
teraz mogę dowiedzieć się długość linii, ale tylko na liniach, które są krótsze niż 4095 znaków, plus dwa char tablice wydawać się niewygodne sposób robienia zadania. Czy istnieje lepszy sposób to zrobić (już użyłem fgets(), ale powiedziano mi, że nie był najlepszy sposób)?
--Ry
To 'realloc' nie' relloc'. –
Podobnie jak notatka, czytanie znaków po znaku jest bardzo powolne. Powinieneś przeczytać to w dużych kawałkach (4-16k). – Blindy
@Bindy: przedwczesna optymalizacja ... –