在linux的一行结尾的奇怪的字符。用getline读取行

时间:2012-11-21 16:14:01

标签: linux getline chars

刚开始的时候,我想说我非常喜欢linux和其他东西。

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

一开始,我打开文件描述符,打开函数。

然后我将(int)f_descriptor更改为(FILE *)f_stream(因为GetLine需要FILE * arg)。

我将整行分成单词(空格是分隔符),然后将它们放入char ** words_array中。只要它不是该行中的最后一个单词,一切正常。出于某种原因,最后一句话在他们的最后有一些奇怪的字符。它永远不会发生。

enter image description here

为什么会发生这种情况?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您不能简单地将(int) f_descriptor更改为(FILE*) f_stream。他们是两个非常不同的东西。如果您使用open()获取f_descriptor,则需要使用read()write()来访问该文件,但如果您使用fopen()获取{{1}您使用f_streamfgetch()fread()fwrite()gets()puts()fprintf()等。< / p>