1

文字を読み取ってテーブルに配置するために getchar() を使用し、整数を取得するために scanf を使用しています。

scanf() の問題は、ユーザーの入力を待たずに、getchar() を使用して、前の行で指定された最後の文字をバッファーから読み取ることです。

sscanf, fflush(stdin); を試しました。などですが、私はまだ同じ動作をしています。

#include <stdio.h>
#include <stdlib.h>


main()
{
    int i, choice, tmp_day, tmp_month;
    char name[5];

    printf("insert choice(1-3):\n");
    scanf("%d",&choice);


    printf("name: ");
    for (i=0;i<5;i++) name[i]=getchar();

    name[5] = '\0' ;

    printf("day (1-31): ");

    scanf("%d",&tmp_day);

    printf("month (1-12): ");

    scanf("%d",&tmp_month);

    printf("\n%d %d", tmp_day, tmp_month);

}

何か案が?

前もって感謝します。

4

2 に答える 2

1

fflush(stdin)必ずしも移植可能ではない 詳細な議論。

http://c-faq.com/stdio/gets_flush2.html
于 2012-04-27T02:57:49.837 に答える
0

各 scanf の後に、次のステートメントを使用します。

fflush(stdin);
于 2012-04-27T02:47:11.230 に答える