我需要编写的程序的目标是它将从一个文件中读取一行ONCE(这意味着当你阅读它时,你不应该回到文件并再次读取它),它应该将该行存储在一组字符中。数组的大小必须足够大以容纳文本行。此外,建议不要使用getchar,而是使用fgets。
答案 0 :(得分:0)
最坏的情况是,文件中只有一行文本,因此您需要获取文件大小并为缓冲区分配大量内存。
#include <io.h>
#include <stdlib.h>
long buffLen = _filelength(...);
// check bufLen for errors
char* buffer = (char*)malloc((size_t)buffLen);
// check for allocation failures (it could be an 8 gigabyte file)
如果您的CRT不支持_filelength posix函数,请查看此thread,并记住所有平台上long
不是64位,因此使用方法返回64位值是最好的。
答案 1 :(得分:0)
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
//this two function will help you,you can man them on linux
答案 2 :(得分:0)
循环fget()
,直到返回NULL
且feof()
为真,或者数据读取以\n
结尾。对于每次迭代,将数据读入临时缓冲区并将其附加到最终缓冲区,该缓冲区的大小也相应增加。