以下のコードを試してみましたが、整数を入力すると、プログラムは文字を要求しません。プログラムはprintf行を実行します。上記の問題を回避するにはどうすればよいですか?
#include <stdio.h>
void main()
{
char a[5];
int p;
printf("data\n");
scanf("%d",&p);
scanf ("%c",&a);
printf("--> %c %d\n",a,p);
}
scanf
次のようにスペースを入れます。
scanf (" %c",&a);
^-------note
末尾の改行が食い尽くされるように。整数を入力した後にEnterキーを押すと、2回目の呼び出しでscanf
読み取られるバッファに末尾の改行文字があります。またmain
、ISOごとに返す必要がありますint
また、次のステートメントは正しくありません。
char a[5];
printf("--> %c %d\n",a,p);
char を読み取り、配列を出力しています。あなたは単に必要です:
char a;
printf("--> %c %d\n",a,p);
文字の配列を読み取る(または入力を取得する)場合は、 を使用しますfgets
。次のchar a[5]
ようなことを行います:
fgets (a, 5 , stdin)
fgets はバッファセーフであるためです。