kinikika 2021-11-01 00:48 采纳率: 87.5%
浏览 24
已结题

为何这一程序无法通过预设条件退出?


#include<stdio.h>
#include<math.h>
void main()
{
    int i = 0;
    char c;
    while (1) 
    {
        c = '\0';
        while (c != 13 && c != 27)
        {
            c = getchar();
            printf("%c\n", c);
        }
        if (c == 27)
        {
            break;
        }
        i++;
        printf("The No.is %d\n", i);
    }
    printf("The end");

}

该程序为何无法通过设定好的输入esc键和回车退出?

  • 写回答

1条回答 默认 最新

  • 关注

    首先,getchar是敲击回车符后才会刷新缓存,所以如果不输入回车符的话,内层的while会一直卡在getchar()函数这里。
    因为回车符一般是\n,\n的ASCII码是10,13是\r的ASCII吗,\r是换行符。
    所以输入esc键是没用的,因为最后的字符肯定是\n,c的值就是10,不会等于27的,所以不会退出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月9日
  • 已采纳回答 11月1日
  • 创建了问题 11月1日

悬赏问题

  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥30 BC260Y用MQTT向阿里云发布主题消息一直错误
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)