免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1455 | 回复: 10
打印 上一主题 下一主题

請教一個程序返回的問題. [已解決, 謝各位] [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-06 11:13 |只看该作者 |倒序浏览
各位, 以下是小弟一個程序返回的構思, 請各位指教.

代碼:

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. static void check2(char string[])
  5. {
  6.     int result  = 0;

  7.     if(strcmp(string, "happy") == 0)
  8.         result = 1;
  9.     else
  10.         result = 0;

  11.     if(result)
  12.         printf("OK!\n");
  13.     else
  14.         return;
  15. }


  16. static int check(char string[])
  17. {
  18.     if(strcmp(string, "happy") == 0)
  19.         return (1);
  20.     else
  21.         return (-1);
  22. }

  23. static void one(void)
  24. {
  25.     char abc[10] = "unhappy";

  26.     if(abc != NULL)
  27.     {
  28.     if(check(abc))
  29.         {
  30.             check2(abc);
  31.         }
  32.     }else
  33.         return;
  34. }


  35. int main(void)
  36. {
  37.     while(1)
  38.     {
  39.         one();
  40.     }
  41.     return 0;
  42. }
复制代码


程序構思是這樣的, 這裡有三個function, 分別為 one, check, check2, one 是檢查字串是否空的, 若否進入check, 檢查字串是否相同, 返回值1及-1即true及false. 若true(1)再進入check2作第二次的檢查, 再次得出result值為1或-1. 當1時, 顯示ok, 當-1時return. 而我所發問的問題就在這, 當return是,它是會返回check. 有沒有方法當result為-1時立刻返回main呢... 這就是我要向你們請教的問題了.  在我真實的程序內, 會進入了二層function, 而用return時只會返回上一層function. 程序往往就在這當false時返回出現Segmentation fault.
謝謝各位指教.

[ 本帖最后由 惠繪洋 于 2005-12-6 16:40 编辑 ]

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2005-12-06 11:16 |只看该作者
static char abc[10] = "unhappy";

论坛徽章:
0
3 [报告]
发表于 2005-12-06 11:41 |只看该作者
原帖由 mq110 于 2005-12-6 11:16 发表
static char abc[10] = "unhappy";


並不太明白, 你意思是把abc當成局域變數...

论坛徽章:
0
4 [报告]
发表于 2005-12-06 11:43 |只看该作者
惠繪洋兄,你的繁体字是在linux下输入的吗?用什么输入法?

论坛徽章:
0
5 [报告]
发表于 2005-12-06 11:45 |只看该作者
原帖由 albcamus 于 2005-12-6 11:43 发表
惠繪洋兄,你的繁体字是在linux下输入的吗?用什么输入法?


並不是, 在windows下的...
但在linux 我用chinput, xcin 也可以輸入繁體, 但以xcin支援繁體最好. chinput為簡體最好...

论坛徽章:
0
6 [报告]
发表于 2005-12-06 14:03 |只看该作者
再推推先...thanks.

论坛徽章:
0
7 [报告]
发表于 2005-12-06 14:23 |只看该作者
至少這段程序找不到bug。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2005-12-06 14:40 |只看该作者
》》有沒有方法當result為-1時立刻返回main呢
你要用setjmp,longjmp。
还有你的程序怎么是无限循环,什么意思?

论坛徽章:
0
9 [报告]
发表于 2005-12-06 14:42 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2005-12-06 14:51 |只看该作者
这段程序肯定会进入check2,因为1和-1都是真
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP