我定义了一个整型n,用scanf输入值,然后又用到swicth中,但当我输入字符的时候却会进入死循环
5条回答 默认 最新
MarkHan_ 2023-03-07 09:02关注该回答引用GPTᴼᴾᴱᴺᴬᴵ
这是因为当你输入字符时,scanf函数会将字符留在输入缓冲区中,而switch语句又会不断读取缓冲区的内容进行匹配,导致了死循环。为了避免这种情况,可以在使用scanf函数后使用fflush(stdin)函数清空输入缓冲区,或者使用getchar函数将输入缓冲区中的字符读取并忽略掉。例如:
int n; scanf("%d", &n); fflush(stdin); //清空输入缓冲区 switch(n) { //... }或者:
int n; scanf("%d", &n); while(getchar() != '\n'); //读取并忽略输入缓冲区中的字符 switch(n) { //... }这样就能避免由于输入错误类型导致的死循环问题。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用