Tôi muốn đọc từng dòng một tập tin, mà không biết chiều dài của dòng trước đó. Dưới đây là những gì tôi có cho đến nay:Đọc dòng từ tập tin mà không biết chiều dài dòng
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.
tôi bây giờ có thể tìm ra chiều dài dòng, nhưng chỉ cho dòng ngắn hơn 4095 ký tự, cộng với hai mảng char có vẻ giống như một cách vụng về làm nhiệm vụ. Có cách nào tốt hơn để làm điều này (tôi đã sử dụng fgets() nhưng đã nói nó không phải là cách tốt nhất)?
--Ry
It's 'realloc' not' relloc'. –
Cũng giống như một lưu ý, việc đọc từng ký tự rất chậm. Bạn nên đọc nó trong khối lớn (4-16k). – Blindy
@Blindy: tối ưu hóa sớm ... –