浪子黑心 发表于 2014-8-12 09:34:45

关于break的一个小程序

本帖最后由 风之残月 于 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");
}

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

流行语 发表于 2014-8-12 09:34:46

int i = 0;
                char c;

                while(1)
                {
                        c = '\0';

                        while(c != 13 && c != 27)
                        {
                                c = _getch();
                                printf("%c ",c);
                        }
                        if(c == 27)
                        {
                                break;
                        }

                        i++;

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

                printf("the end\n");

                system("pause");
你把#include <conio.h>包含进来,用_getch()来获取你按键获取到的字符,你用getchar()获取不到esc键。你看一下百度百科。http://baike.baidu.com/view/751665.htm?fr=aladdin这里面说的很清楚。

yvqiang 发表于 2014-8-12 10:13:01

本帖最后由 yvqiang 于 2014-8-12 10:27 编辑

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

void main()
{
        int i = 0;
        char c;
       
        while(1)
        {
                c = '\0';
               
                while(c != 13 && c != 27)
                {
                        c = getch();
                        printf("%c ",c);
                }
                if(c == 27)
                {
                        break;
                }
               
                i++;
               
                printf("the no. is %d\n",i);
        }
       
        printf("the end\n");
       
        system("pause");
       
}


浪子黑心 发表于 2014-8-12 12:58:51

yvqiang 发表于 2014-8-12 10:13
查ASCII码表可以得出
char 类型13代表\r回车
char 类型27代表ESC退出给你个样儿:

你这个程序也有问题 它并不输出我输入的字符 是直接跳出while语句

yvqiang 发表于 2014-8-12 16:36:38

本帖最后由 yvqiang 于 2014-8-12 17:02 编辑

浪子黑心 发表于 2014-8-12 12:58
你这个程序也有问题 它并不输出我输入的字符 是直接跳出while语句
你程序的这个i是不是要记录输入字符的个数哦?
我是照着你上面的打的,可能我用的devc有点不一样,但是不会跳出来呀http://bbs.fishc.com/data/attachment/album/201408/12/164031zccdjsze43cjg44g.jpg
如果I是记录输入的个数的话我想应该改成这样:
#include <stdio.h>

void main()
{
      int i = 0;
      char c;
      
      while(1)
      {
            c = '\0';
            while(c != 13 && c != 27)
            {
                c = getch();
                printf("%c",c);
                i++;
            }
            if(c == 27)
            {
                break;
            }
      }
      printf("\n");      
      printf("the no. is %d\n",i);
      printf("the end\n");
      system("pause");


木丶白水 发表于 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");
}

不知道你要什么样的输出格式,不过你应该可以自己改了
页: [1]
查看完整版本: 关于break的一个小程序