首页 > 用户发贴区 > 编程问题提问区 > 退出while 循环的问题
2008
09-06

退出while 循环的问题

晕的了!!好像真正讲解原理的人是 whsjxiong ,不是我哦。


楼主要看清楚了,呵呵……


退出while 循环的问题》有 9 条评论

  1. 狂野的云 说:

    我的意思是,在exe 文件中我无论输入什么都无法退出 while循环。。。。。。

    按理说,当输入为空的时候是会退出的啊,至少我是想让他那么执行的~~

     

  2. whos 说:

    程序如下:

    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_INPUT 1000

    int main( void )
    {
     char input[MAX_INPUT];
     while ( gets( input )  )
      {
      if(input[0]==’ ‘)
       break;
      printf ( “putout: %s\n”, input );
       }
     return 0;
    }

  3. VBProFan 说:

    关键是这个 Null(0×00) 你无法输入。你只能输入“0”(0×30)

  4. 狂野的云 说:

    谢谢 VBProFan 的回答

    直接敲回车,输入的便是NULL

    我把它改成这样:

    #include <stdio.h>
    #include <stdlib.h>
    #define MAX_INPUT 1000

    int main( void )
    {
     char input[MAX_INPUT];
     while ( gets( input )  )
      {
      if(input[0]==NULL)
       break;
      printf ( “putout: %s\n”, input );
       }
     return 0;
    }

    敲回车 便可以直接退出~~

    谢谢whos的回答,请问while ( gets( input ) != NULL )本身存在问题嘛??

    为什么一定要 另外用 if 判断 break退出??

  5. whsjxiong 说:

    理解错误 !!

    while ( gets( input ) != NULL )本身存在问题,gets函数是从终端输入一个字符串到字符数组,并且得到一个函数值。该函数值是字符数组的起始地址 !!

    null是有地址的(0×00),而你如此输入 , gets( input ) != NULL 会永远成立,故而构成死循环。。。

     

  6. whos 说:

    [QUOTE=狂野的云]

    我的意思是,在exe 文件中我无论输入什么都无法退出 while循环。。。。。。

    按理说,当输入为空的时候是会退出的啊,至少我是想让他那么执行的~~

     

    [/QUOTE]

    我看成了“当输入为空格的时候”,所以理解成了是你输入空格后再回车,然后退出,所以加了个判断输入空格的情况。

    输入为空的时候直接判断输入为回车就行了。、

    呵呵……

  7. 狂野的云 说:

    哦 是我对 gets 函数的理解有问题  呵呵,原来gets 得到的 是指针啊~~ 而 NULL 是 空指针~~

    字符串的初始地址值,当让不会等于  0×00  了   害我郁闷好半天。。。。。

    再次谢谢 whos,你基础真 NB 啊 

  8. whos 说:

    晕的了!!好像真正讲解原理的人是 whsjxiong ,不是我哦。

    楼主要看清楚了,呵呵……

  9. 狂野的云 说:

    啊。。。。对不住 whsjxiong 兄弟了,上课的时候我偷偷上了下论坛

    结果感激之情 发泄错了对象。。。。。。(其实是就看错了。。。)

    恩,谢谢 whsjxiong 的帮助,我可不是那种麻烦了人家都不道谢一声的人啊~~

    你的 基础 那个叫 牛

留下一个回复