Break语句不在循环内或在C中切换

时间:2012-08-22 19:37:10

标签: c if-statement break

我的C代码中出现此错误。我不知道我做错了什么。如果我评论此代码我的程序工作。 这段代码在int main()中。

 if(argc!=2 && strcmp(argv[0],"selection-sort")==0 && strcmp(argv[1],"input.txt")==0 && strcmp(argv[2],"output.txt")==0)
        {
                printf("The command line arguments are correct.\n");
        }
        else
        {
                printf("The command line arguments are wrong.I am exiting.\n");
                break;
        }

6 个答案:

答案 0 :(得分:9)

它看起来的方式我认为你不是在一个循环而只是检查main中的args。你可能想要return 1exit(1)而不是休息。

答案 1 :(得分:4)

首先确保包含所需的头文件:

#include <stdio.h>
#include <stdlib.h>

break命令用于退出循环,你不在循环中,你只是在一个else语句中,你没有什么可以打破。传递else语句后,代码流正常执行。如果你想在else语句中退出程序,你可以这样做:

    else
    {
            printf("The command line arguments are wrong.I am exiting.\n");
            return 1; //exit program with status 1 to indicate a non normal exit
    }

或者如果您想在显示该消息后继续播放该节目,您可以这样做:

else printf("The command line arguments are wrong.I am exiting.\n");
//more code here

你只能使用像这样的中断循环:

while(foo)    //while foo is true
{
    break;    //exit the loop
}

答案 2 :(得分:3)

标题中的错误消息显示全部:break只能用于退出循环或防止案例掉线。 MSDN引用:

  

break语句终止执行最近的封闭   do,for,switch或while语句。

使用return保留函数。

答案 3 :(得分:3)

Break应该在循环中使用。

使用 return 语句,这会导致执行离开当前子例程,并在调用子例程之后立即从代码中的点恢复(返回地址)。

答案 4 :(得分:1)

其他答案都是正确的,这只是一个小小的补充。

要在这种特定情况下返回,您应该包括errno.h,如下所示:

#include <errno.h>

然后再回复:

return EINVAL;

然后,您发信号通知程序由于错误而终止,并且返回值明确指出错误是无效的参数。

答案 5 :(得分:1)

  

'break'只会让你离开最里面的循环或开关。你可以随时使用'return'退出函数。

     

“break语句可能只出现在迭代语句或switch语句中,并终止执行最小的封闭语句”。

     

它也有道理 - 你可以从“返回”的方法中“逃脱”,你可以使用if / else跳过其他情况下的代码。我不知道案件之外会有什么“休息”。

     

'break'实际上只是'goto'的限制形式。理想情况下,您希望从任何代码块中退出一个点。你应该只在switch语句中使用'break',因为这是使它工作的唯一方法。在任何其他情况下,有更好的方法来完成同样的事情。这同样适用于'继续'。