0

はじめに、私は Linux などの初心者です。

GetLine を使用してファイルを (1 行ずつ) 読み込んでいます。

最初に、関数 open でファイル記述子を開きます。

次に、(int)f_descriptor を (FILE*)f_stream に変更します (GetLine には FILE* arg が必要なため)。

行全体を単語に分割し (スペースは区切り記号です)、それらを char** words_array に配置します。行の最後の単語でない限り、すべて問題なく動作します。何らかの理由で、最後の単語の末尾に奇妙な文字がいくつかあります。いつも起こるわけではありません。

ここに画像の説明を入力

なぜこれが起こるのでしょうか?

4

2 に答える 2

1

一見すると、最後の文字列を null で終了していないと思われます。報告されている長さは正しいですが、余分なバイトがあるという事実は、最初にすべてではなく一部のヌルバイトが含まれているメモリ領域に物事をコピーしていることを意味する可能性がありますが、追加していません明示的な null バイト。より良い答えが必要な場合は、データを読み取っているコードの一部を投稿できると役立ちます。

于 2012-11-21T17:47:55.987 に答える
0

(int) f_descriptorを に単純に変更することはできません(FILE*) f_stream。それらは2つの非常に異なるものです。open()getを使用する場合、ファイルにアクセスするにはとf_descriptorを使用する必要がありますが、get を使用する場合は、、、、、などを使用します。read()write()fopen()f_streamfgetch()fread()fwrite()gets()puts()fprintf()fscanf()

于 2012-11-21T19:55:37.047 に答える