C编程:如何在用户输入标记值后终止程序?

时间:2013-02-11 23:41:59

标签: c return sentinel

所以我先#define SENTINEL -1

在某个函数中,我设置了一个if语句

void blahblah(blah)
{
   printf("Enter an integer (-1 to quit)");
   scanf("%d", &value);
   if (value == SENTINEL)
     return;
}

但出于某种原因,它并没有像我想要的那样终止程序?

4 个答案:

答案 0 :(得分:1)

return并不意味着退出,它只是意味着从函数中返回....在那里的代码中,if语句是无用的,因为如果if语句为false,函数将会返回。

你可能想要从blahbalh返回一个值来说退出。

答案 1 :(得分:0)

如果您希望整个计划终止,请将return替换为exit(0);。另外,请确保value的数据类型为int而非unsigned int

答案 2 :(得分:0)

通常的方法是设置一个标志来引起回归;在main()中 - 但您可以使用exit()立即从代码的任何部分中止程序。

请注意,如果您使用exit(),程序将在那里结束,您将无法获得任何可能要运行的终止/清理代码。

再次编辑,用错误的语言思考! exit()需要一个表示返回状态的int参数,EXIT_SUCCESS或EXIT_FAILURE

我的坏!

答案 3 :(得分:0)

程序没有理由终止,你只是在值== SENTINEL时离开(返回)一个函数。

你的功能还有三个问题; if value!= SENTINEL然后你不返回一个未定义行为的函数;参数blah缺少一个类型(int blah);并且值应该是全局的,以使该功能起作用。