繁体   English   中英

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

[英]Break statement not within loop or switch in C

我的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;
        }

它的外观我认为您不是处于循环中,而只是检查main中的args。 您可能想要类似return 1exit(1)而不是使用break。

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

#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
}

标题中的错误消息说明了一切: break仅可用于退出循环或防止案件失败。 MSDN报价:

break语句终止出现在其中的最接近的do,for,switch或while语句的执行。

离开函数使用return

Break应该用于循环中。

使用return语句,该语句使执行离开当前子例程,并在调用该子例程后立即在代码中的点(返回地址)继续执行。

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

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

#include <errno.h>

而且还这样返回:

return EINVAL;

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

“中断”只会使您退出最内层的循环或切换。 您可以随时使用“返回”退出某个功能。

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

这也很有意义-您可以使用“ return”从方法中“转义”,并且在其他情况下可以使用if / else跳过代码。 我不知道会在案件之外发生什么“休息”。

无论如何,“ break”实际上只是“ goto”的受限形式。 理想情况下,您希望从任何代码块中退出。 您实际上应该只在switch语句中使用“ break”,因为这是使其工作的唯一方法。 在任何其他情况下,都有更好的方法可以完成同一件事。 “继续”也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM