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 回答