杀入巅峰 2023-03-07 08:57 采纳率: 70%
浏览 18
已结题

关于建立某个系统中输入的问题

我定义了一个整型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) {
        //...
    }
    
    
    

    这样就能避免由于输入错误类型导致的死循环问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 9月21日
  • 已采纳回答 9月13日
  • 创建了问题 3月7日