main()
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); //获取控制台输出句柄
int num;
score *head = NULL, *stu = NULL;
system("color f0");
menu();
scanf("%d", &num);
while (1)
{
switch (num)
{
case 1:
//head = create();
break;
case 2:
//head = load(head);
break;
case 3:
//head = search(head);
break;
case 4:
//head = del(head);
break;
case 5:
//head = add(head,stu);
break;
case 6:
//print(head);
break;
case 7:
//save(head);
break;
case 0:
exit(0);
break;
default:
SetConsoleTextAttribute(handle, FOREGROUND_INTENSITY | BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE | FOREGROUND_RED);
printf("\t\t 请输入0~7之间的数!");
SetConsoleTextAttribute(handle, BACKGROUND_INTENSITY | BACKGROUND_RED | BACKGROUND_GREEN | BACKGROUND_BLUE);
getch();
}
menu();
scanf("%d", &num);
}
}
这里要接收数字并进行判断,如果是0-7之外的数字就重新清屏接收输入,但是在我第一次输入非数字后std

在C语言编程时遇到scanf()函数在输入非数字后不再接收输入,导致死循环的问题。通过debug发现是输入缓冲区未清空。解决方案包括使用fflush(stdin),但考虑到该函数的兼容性问题,文章推荐使用scanf("%*[^
]%*c")清空缓冲区。此外,还介绍了其他清除缓冲区的方法。
最低0.47元/天 解锁文章
61万+

被折叠的 条评论
为什么被折叠?



