1

私はプログラムを書いていますが、scanf と fopen を一緒に使用するのに問題があります。

私が言うことができることから、私の間違った行は次のようです:

FiLE * DataFile
DataFile = fopen("StcWx.txt","r");
scanf(DataFile, "%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low);

開いたファイルには、次のような気象データのリストがあります。

1944    4   12  0   58  24
1944    4   13  0.4 58  29
1944    4   14  0.54    42  29
1944    4   15  0   43  27

(これらのスペースはタブです)

表示されるエラーは「[警告] 互換性のないポインター型から `scanf' の引数 1 を渡しています」です。

誰でも私を助けることができますか?

4

4 に答える 4

15

fscanfではなくscanfが必要だと思います。

于 2008-09-24T18:39:52.047 に答える
2

あなたのコードは、scanf ではなく fscanf を使用する必要があるようです。

fscanf を直接呼び出すのではなく、fgets と sscanf を使用することを強くお勧めします。

fscanf は、ファイル ポインターがどこにあるのか不明なままになるような方法で失敗する可能性があります。fgets を使用して行全体を取得し、sscanf を使用して文字列をスキャンすると、ファイル ポインターの状態が常にわかり、行の先頭まで簡単にバックアップできます (文字列はまだメモリ内にあります)。

于 2008-09-26T07:00:55.487 に答える
1

間違った関数を使用しています。を使用する必要がありますfscanf

于 2008-09-24T18:40:11.030 に答える
0

どうですか:

freopen ("StcWx.txt","r",stdin);

scanf("%i %i %i %.2f %i %i", &Year, &Month, &Day, &Precip, &High, &Low);

http://www.cplusplus.com/reference/cstdio/freopen/

于 2019-02-08T10:42:59.600 に答える