0

一开始,我想说我是 linux 和其他东西的初学者。

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

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

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

我将整行拆分为单词(空格是分隔符)并将它们放入 char** words_array 中。一切正常,只要它不是最后一个字。出于某种原因,遗言的末尾有一些奇怪的字符。它并不总是发生。

在此处输入图像描述

为什么会发生这种情况?

4

2 回答 2

1

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

于 2012-11-21T17:47:55.987 回答
0

您不能简单地将 a 更改(int) f_descriptor为 a (FILE*) f_stream。他们是两个非常非常不同的东西。如果使用open()to get f_descriptor,则需要使用read()andwrite()来访问文件,但如果使用fopen()to get f_stream,则使用fgetch(), fread(), fwrite(), gets(), puts(), fprintf(),fscanf()等。

于 2012-11-21T19:55:37.047 回答