0

私はそれを理解しようとして長い間これに苦労してきました.それは本当にばかげた初心者の間違いだと思いますが、私はそれを理解することはできません.

だから私はファイルから整数を読み込もうとしていて、そこでいくつかの操作を実行しようとしています。問題のために、ここに出力しようとしています:

FILE * pFile;
int number;
pFile = fopen ("myfile.txt","r");
if (pFile!=NULL) {
fscanf(pFile, "%d", number);
fclose (pFile);
}
printf("number: %i", number);
return 0;

myfile.txt の内容:

123

しかし、私がそれを実行すると、何も読み取られず、代わりに次のように表示されます

RUN FAILED (exit value 1, total time: 32ms)

助けてくれてありがとう

編集:言及するのを忘れていましたが、文字列として機能し、正しい数値を読み取りますが、数値タイプを2倍に設定すると機能しますが、数百万の乱数を出力します。 ..

4

4 に答える 4

4

int変数のアドレスをfscanfに渡す必要があります

fscanf(pFile, "%d", &number);
于 2012-10-17T23:07:59.430 に答える
1

数値へのポインターが必要です

すなわち

fscanf(pFile, "%d", &number);

からの戻り値を確認することをお勧めします。fscanf

また、おそらくフラッシュを行う必要があります。

つまり、printf の後に次の行を追加します。

fflush(stdout);

また、ファイルを開くことができない場合は、初期化するnumberか、実行する必要があります。return

要約すると、コードは次のようになります

FILE * pFile;
int number;
pFile = fopen ("myfile.txt","r");

if (NULL == pFile && 1 == fscanf(pFile, "%d", &number))
{
    printf("Number: %i", number);
    fflush(stdout);
    return 0;
}
else
{
    return -1;
}
于 2012-10-17T23:16:50.517 に答える
0

number の値ではなく、number のアドレスを fscanf に渡すのを忘れました。だから交換

fscanf(pFile, "%d", number); 

fscanf(pFile, "%d", &number);

数値のアドレス/ポインターを渡す必要があります。そうしないと、数値の内容を変更できないためです。

于 2012-10-17T23:11:29.150 に答える