1

こんにちは、私は C プログラミングが初めてで、fscanf を使用してテキスト ファイルで 10 進数を取得するのに問題があります。常に 1 つではなく 2 つの数値が表示されます 例: テキスト ファイルには 2.5 があります

しかし、結果として、1つのchar型(2.)と1つのinteger型(5)をゲームします。

10進数をintとして取得するにはどうすればよいですか?

while((val = fscanf(stdin,"%d%c",&num ,&c)))
4

3 に答える 3

1

num == 2 と c == 5 を取得する理由は、最初に整数を読み取ってから char を読み取ろうとしているためです。入力バッファーには2が含まれています5

整数の読み取りは、' . ' が検出され、' . ' が入力バッファからフラッシュされ、次に文字を読み込もうとしているため、'5'が c に入ります。

このようなことができます

float tmp;
int num;
char c;
scanf("%f%c", &tmp, &c);
num = tmp; //this will truncate the decimal part

注: 文字を読み取った後に Enter キーを押し、すぐにもう一度文字を読み取ろうとすると、改行文字が入力バッファーに残り、次の文字として読み取られることに注意してください。明示的にフラッシュする必要があります。

于 2014-08-19T10:13:46.847 に答える
0

char の場合、fscanf(fin,"%c) よりも fgetc() を使用する方が適切です。次のように使用します。

c=fgetc(fi); or fputc(c,fout);
于 2015-01-15T17:09:47.610 に答える