鱼C论坛

 找回密码
 立即注册
查看: 3367|回复: 5

关于break的一个小程序

[复制链接]
发表于 2014-8-12 09:34:45 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 风之残月 于 2014-11-9 22:43 编辑

#include <stdio.h>

void main()
{
    int i=0;
    char c;

    while(1)          /*设置训循环*/
    {
        c='\0';      //变量赋初值
        while (c!=13&&c!=27)//键盘接受数字附直接按到回车后者Esc键
        {
            c=getchar();
            printf("%c\n",c);
        }
        if(c==27)
            break; //判断若按Esc键可推出循环
        i++;
        printf("The No.is %d\n",i);
    }
    printf("The end");
}

这个程序为什么不按回车或空格不推出啊?好像进了死循环 但又没查出错误 大家帮忙看下吧

最佳答案

查看完整内容

你把#include 包含进来,用_getch()来获取你按键获取到的字符,你用getchar()获取不到esc键。你看一下百度百科。http://baike.baidu.com/view/751665.htm?fr=aladdin这里面说的很清楚。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 09:34:46 | 显示全部楼层
  1. int i = 0;
  2.                 char c;

  3.                 while(1)
  4.                 {
  5.                         c = '\0';

  6.                         while(c != 13 && c != 27)
  7.                         {
  8.                                 c = _getch();
  9.                                 printf("%c ",c);
  10.                         }
  11.                         if(c == 27)
  12.                         {
  13.                                 break;
  14.                         }

  15.                         i++;

  16.                         printf("the no. is %d\n",i);
  17.                 }

  18.                 printf("the end\n");

  19.                 system("pause");
复制代码

你把#include <conio.h>包含进来,用_getch()来获取你按键获取到的字符,你用getchar()获取不到esc键。你看一下百度百科。http://baike.baidu.com/view/751665.htm?fr=aladdin这里面说的很清楚。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 10:13:01 | 显示全部楼层
本帖最后由 yvqiang 于 2014-8-12 10:27 编辑

查ASCII码表可以得出
char 类型13代表\r回车
char 类型27代表ESC退出给你个样儿:
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int i = 0;
  5.         char c;
  6.        
  7.         while(1)
  8.         {
  9.                 c = '\0';
  10.                
  11.                 while(c != 13 && c != 27)
  12.                 {
  13.                         c = getch();
  14.                         printf("%c ",c);
  15.                 }
  16.                 if(c == 27)
  17.                 {
  18.                         break;
  19.                 }
  20.                
  21.                 i++;
  22.                
  23.                 printf("the no. is %d\n",i);
  24.         }
  25.        
  26.         printf("the end\n");
  27.        
  28.         system("pause");
  29.        
  30. }
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-12 12:58:51 | 显示全部楼层
yvqiang 发表于 2014-8-12 10:13
查ASCII码表可以得出
char 类型13代表\r回车
char 类型27代表ESC退出给你个样儿:

你这个程序也有问题 它并不输出我输入的字符 是直接跳出while语句
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-12 16:36:38 | 显示全部楼层
本帖最后由 yvqiang 于 2014-8-12 17:02 编辑
浪子黑心 发表于 2014-8-12 12:58
你这个程序也有问题 它并不输出我输入的字符 是直接跳出while语句

你程序的这个i是不是要记录输入字符的个数哦?
我是照着你上面的打的,可能我用的devc有点不一样,但是不会跳出来呀

                               
登录/注册后可看大图

如果I是记录输入的个数的话我想应该改成这样:
  1. #include <stdio.h>

  2. void main()
  3. {
  4.         int i = 0;
  5.         char c;
  6.         
  7.         while(1)
  8.         {
  9.             c = '\0';
  10.             while(c != 13 && c != 27)
  11.             {
  12.                 c = getch();
  13.                 printf("%c",c);
  14.                 i++;
  15.             }
  16.             if(c == 27)
  17.             {
  18.                 break;
  19.             }
  20.         }
  21.         printf("\n");        
  22.         printf("the no. is %d\n",i);
  23.         printf("the end\n");
  24.         system("pause");
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-20 14:14:25 | 显示全部楼层

#include <stdio.h>
#include <conio.h>
void main()
{
    int i=0;
    char c;

    while(1)          /*设置训循环*/
    {
        c='\0';      //变量赋初值
        while (c!=13&&c!=27)//键盘接受数字附直接按到回车后者Esc键
        {
            c=getche();
            printf("%c\n",c);
        }
        if(c==27)
            break; //判断若按Esc键可推出循环
        i++;
        printf("The No.is %d\n",i);
    }
    printf("The end");
}

不知道你要什么样的输出格式,不过你应该可以自己改了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-12 21:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表