scanf获取先前执行的getchar()的输入

时间:2012-04-27 02:45:52

标签: c buffer scanf getchar

我使用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);

}

有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:1)

关于fflush(stdin)的详细讨论,不一定是可移植的。

http://c-faq.com/stdio/gets_flush2.html

答案 1 :(得分:0)

每次扫描后使用此语句:

fflush(stdin);