2012-11-21 64 views
0

在開始時,我想說,我非常開始與Linux和東西。在linux中一行結尾的奇怪字符。閱讀與getline的線

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

在開始時,我打開打開函數的文件描述符。

然後我將(int)f_descriptor更改爲(FILE *)f_stream(因爲GetLine需要FILE * arg)。

我把整行分成單詞(空格是分隔符),我把它們放到char ** words_array中。一切工作正常,只要它不是行中的最後一個字。出於某種原因,最後的單詞在最後有一些奇怪的字符。它並不總是發生。

enter image description here

爲什麼會這樣呢?

回答

1

從外觀上看,我懷疑你不是null-終止最後一個字符串。它報告的長度是正確的,但事實是你有額外的字節可能意味着你正在複製到一個內存區域,其中最初有一些(但不是全部)空字節,但是你沒有添加顯式空字節。如果你想得到更好的答案,這將有助於你可以在你讀取數據的地方發佈一些代碼。

+0

我發現問題是由最後一個字符串中缺少\ 0引起的,但是您的答案是正確的。謝謝 :) – Patryk

0

您不能簡單地將(int) f_descriptor更改爲(FILE*) f_stream。他們是兩個非常非常不同的東西。如果您使用open()得到f_descriptor,你需要使用read()write()訪問該文件,但如果使用fopen()得到f_stream,您使用fgetch()fread()fwrite()gets()puts()fprintf()fscanf()