如果这个问题看起来“简单”,我真的很抱歉,但是我找不到任何答案。我试图使用fgets()从文件中读取一行。为了确保没有浪费空间,首先我找到了行的长度:
do
{
c= getc(file);
words++;
}while (c!=EOF && c!='\n');
然后我为内存分配了字数:
char* line = (char*)malloc(sizeof(char)*(words));
然后,我使用fgets()将行读取到行缓冲区。但是问题是,这正在起作用。但是我一直认为您也应该为null终止char分配内存。那么这里发生了什么?
您确实需要为null终止符分配空间。实际上,这并不意味着它总是会(至少在C语言中)。
另外,fgets
还返回\n
字符。因此,您将需要两个额外的字符。一为\n
一\0
。
我还是推荐这种方法:
char buffer [1024];
if ( fgets (buffer, 1024, f) != NULL ) {
// so something with buffer
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句