gpt4 book ai didi

c - 为具有空终止字符的 fgets 分配内存字符串

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:08 25 4
gpt4 key购买 nike

如果这个问题看起来“简单”,我真的很抱歉,但我无法在任何地方找到答案。我尝试使用 fgets() 从文件中读取一行。为了确保没有浪费空间,首先我找到了该行的长度:

do
{
c= getc(file);
words++;
}while (c!=EOF && c!='\n');

然后我为准确的字数分配了内存:

char* line = (char*)malloc(sizeof(char)*(words));

然后,我使用 fgets() 将行读取到行缓冲区。但问题是,这是有效的。但我一直认为你也应该为空终止字符分配内存。那么这里发生了什么?

最佳答案

确实需要为空终止符分配空间。这有效的事实并不意味着它总是有效(至少在 C 中)。

此外,fgets 还返回 \n 字符。所以你需要两个额外的字符。一个用于 \n,一个用于 \0

不过我会推荐这种方法:

char buffer [1024];
if ( fgets (buffer, 1024, f) != NULL ) {
// so something with buffer
}

关于c - 为具有空终止字符的 fgets 分配内存字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25353512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com