我使用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);
}
有什么想法吗?
提前致谢。
答案 0 :(得分:1)
关于fflush(stdin)
的详细讨论,不一定是可移植的。
http://c-faq.com/stdio/gets_flush2.html
答案 1 :(得分:0)
每次扫描后使用此语句:
fflush(stdin);