0

以下のコードを試してみましたが、整数を入力すると、プログラムは文字を要求しません。プログラムは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);
} 
4

1 に答える 1

1

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 はバッファセーフであるためです。

于 2013-11-13T14:42:22.443 に答える