我想逐行读取一个文件,但不知道每行的长度。以下是我目前的代码:
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.
我现在能够确定行长,但只限于长度小于4095个字符的行,此外,两个字符数组似乎是完成任务的一种笨拙方式。 有更好的方法吗?(我已经尝试使用fgets()函数,但被告知这不是最佳方法)。
--Ry
malloc()
的结果强制转换。 - Quentingetc(3)
或fgetc(3)
逐个字符读取是没有问题的,因为stdio会进行完全缓冲。请检查一下,因为你错了。顺便说一句,自己选择一个不好的缓冲区大小(与stdio包的方式相反)可能会导致更糟糕的资源分配,并影响整个程序的效率。 - Luis Colorado