1

Cを使用して一部のデータを読み込もうとしていますが、本来の機能を実行するためにfreadを取得するのに問題があります。データファイルのフォーマットと関係があると思います…dos2unixを使ってUnixフォーマットに変更したDOSファイルでした。

関連するコードは次のとおりです。

    char* temp = calloc(5, sizeof(char));
    while(fread(temp, sizeof(char), 4, in)){
        *(temp + 4) = '\0';
        printf("%s\n", temp);
        ...
    }

データファイルは次のようになります。

KAAA
KAAF
KAAO
KAAS
KAAT
KABE
KABI
KABQ
...

出力:

KAAA^@

KAA^@
F
KA^@
AO
K^@
AAS
^@
KAAT^@

KAB^@
E
KA^@

...ナンセンス

誰かが私にヒントを与えることができますか?

4

2 に答える 2

1

改行文字を説明するのを忘れて、4文字しか読んでいません。一度に5文字を読むと、修正されるはずです。

char* temp = calloc(5, sizeof(char));
while(fread(temp, sizeof(char), 5, in)){
    *(temp + 4) = '\0';
    printf("%s\n", temp);
    ...
}
于 2012-12-28T20:45:39.553 に答える
0

行の終わりを示す(1つまたは2つの)改行文字は使用しません。Unixでは、追加してみてください

fgetc(in);

Windowsでは、

fgetc(in);
fgetc(in);

の呼び出し後fread()

于 2012-12-28T20:44:12.573 に答える