内存为具有空终止字符的fget分配字符串

ByoTic

如果这个问题看起来“简单”,我真的很抱歉,但是我找不到任何答案。我试图使用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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内存为具有空终止字符的fget分配字符串

来自分类Dev

具有空值和内存分配的字符串

来自分类Dev

无法解析具有空字符的字符串

来自分类Dev

将具有空元素的字符串向量转换为连接的字符串向量

来自分类Dev

C#-禁用按钮,如果字符串为空或具有空格?

来自分类Dev

PostgreSQL-比较具有空值的字符串

来自分类Dev

为什么与字符串文字不同,具有单独字符的字符数组不以空终止符结尾?

来自分类Dev

带有空字节的Ruby字符串

来自分类Dev

具有空字符串的Oracle NVL

来自分类Dev

具有固定大小的字符串的动态内存分配

来自分类Dev

C++ - 创建具有相同字符的特定大小的空终止 c 样式字符串的更好方法

来自分类Dev

具有空字符串的XAML静态字符串数组

来自分类Dev

具有空字符串的XAML静态字符串数组

来自分类Dev

如何从具有空值的数据框列中提取两个子字符串之间的所有字符串?

来自分类Dev

C字符串的空终止

来自分类Dev

空终止在C中的字符串

来自分类Dev

在.NET中,如何释放由OLE分配的0终止的非托管Unicode字符串的内存?

来自分类Dev

具有字符串的结构,包括适当的内存管理

来自分类Dev

通过字符串声明分配内存

来自分类Dev

临时字符串的内存分配

来自分类Dev

C / C ++字符串内存分配

来自分类Dev

分配给字符串的内存

来自分类Dev

C / C ++字符串内存分配

来自分类Dev

为字符串正确分配内存

来自分类Dev

改善字符串内存分配的方法

来自分类Dev

字符串之间有空格

来自分类Dev

没有空格的字符串

来自分类Dev

将具有空字符的字符串写入程序的stdin

来自分类Dev

将空字符添加到非空终止的字符串有什么问题?

Related 相关文章

热门标签

归档