0

ホルダー(文字)の値を計算すると、あいまいな文字が表示されます。文字を読み取って配列に保存してから印刷するにはどうすればよいですか?

while (holder=fgetc(fileA) != EOF) {
    cout << holder;
    lenA++;
    temp = (char*) realloc(seqA,lenA*sizeof(char));
    if (temp != NULL) {
        seqA = temp;
        seqA[lenA-1] = holder;
    }
}
4

3 に答える 3

1

fgetcintではなく、を返しますchar。これはEOF、charが格納できる値よりも大きいためです(の値との競合を避けるためchar)。したがって、ファイルの終わりを超えてランダムなデータを読み取っている可能性があります。

ホルダーをに変更し、印刷してアレイに保存するときにint使用します。(char)holder

于 2013-03-02T19:23:51.027 に答える
1

手始めに、いくつかの括弧が必要です。そうでない場合は、との結果の比較を保存し続けfgetcますEOF

while((holder=fgetc(fileA)) != EOF)
      ^                   ^
于 2013-03-02T18:42:31.187 に答える
0

最初にファイルのサイズを最後まで探してファイルサイズを確認し、メモリを一度に割り当て、1回のfread呼び出しでファイル全体を一度に読み取ることをお勧めします。

あなたの前の質問に対する私の答えを見てください

于 2013-03-02T20:04:01.443 に答える