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日

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP