linux中一行末尾的奇怪字符。使用getline读取行

linux中一行末尾的奇怪字符。使用getline读取行,linux,getline,chars,Linux,Getline,Chars,首先,我想说的是,我非常喜欢linux之类的东西 我正在使用GetLine读取一个文件(逐行) 首先,我使用函数open打开文件描述符 然后我将(int)f_描述符更改为(FILE*)f_流(因为GetLine需要FILE*arg) 我将整行拆分为单词(空格是分隔符),并将它们放入char**words\u数组中。只要不是最后一句话,一切正常。由于某种原因,临终遗言的结尾有一些奇怪的字符。这并不总是发生 为什么会发生这种情况?从外观上看,我怀疑您在终止最后一个字符串时不是空的。它报告的长度是正

首先,我想说的是,我非常喜欢linux之类的东西

我正在使用GetLine读取一个文件(逐行)

首先,我使用函数open打开文件描述符

然后我将(int)f_描述符更改为(FILE*)f_流(因为GetLine需要FILE*arg)

我将整行拆分为单词(空格是分隔符),并将它们放入char**words\u数组中。只要不是最后一句话,一切正常。由于某种原因,临终遗言的结尾有一些奇怪的字符。这并不总是发生


为什么会发生这种情况?

从外观上看,我怀疑您在终止最后一个字符串时不是空的。它报告的长度是正确的,但是您有额外的字节这一事实可能意味着您正在将内容复制到一个内存区域中,该内存区域最初包含一些(但不是全部)空字节,但您没有添加显式空字节。如果你想要一个更好的答案,如果你能在读取数据的地方发布一些代码,这会有所帮助。

你不能简单地将
(int)f_描述符
更改为
(FILE*)f_流
。它们是两种截然不同的东西。如果使用
open()
fscanf()
,等等。

我发现问题是由最后一个字符串中缺少\0引起的,但是您的答案是可以的。谢谢:)