こんにちは、私は C プログラミングが初めてで、fscanf を使用してテキスト ファイルで 10 進数を取得するのに問題があります。常に 1 つではなく 2 つの数値が表示されます 例: テキスト ファイルには 2.5 があります
しかし、結果として、1つのchar型(2.)と1つのinteger型(5)をゲームします。
10進数をintとして取得するにはどうすればよいですか?
while((val = fscanf(stdin,"%d%c",&num ,&c)))
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 キーを押し、すぐにもう一度文字を読み取ろうとすると、改行文字が入力バッファーに残り、次の文字として読み取られることに注意してください。明示的にフラッシュする必要があります。
char の場合、fscanf(fin,"%c) よりも fgetc() を使用する方が適切です。次のように使用します。
c=fgetc(fi); or fputc(c,fout);