我有一个问题,如何从文件中下载一行文本,而不指定这行的大小?我不想用fgets,因为你必须提前给字符fgets。 我可以加载整个文件,但不能加载一行。
FILE *f
long lSize;
char *buffer;
size_t result;
f = fopen("file.txt", "r");
fseek(f, 0, SEEK_END);
lSize = ftell(f);
rewind (f);
buffer = (char*)malloc(sizeof(char)*lSize);
result = fread(buffer,1,lSize, f);
fclose(f);
free(buffer);
使用 malloc() 为你的文本行设置一个初始缓冲区。比如说,16个字符。
在文件上循环并使用 fgetc() 每次检索一个字符。将其存储到缓冲区的适当位置。如果它是一个换行符,在缓冲区里放一个NUL字符,然后退出循环。
当缓冲区快要满的时候,重新分配()它,然后再扩展16个字符。如果重新分配成功,进入步骤2。