C中的Break语句不在循环或开关内

C中的Break语句不在循环或开关内,c,if-statement,break,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 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 1
exit(1)
的内容,而不是中断。

从外观上看,我认为您不是在循环中,而是在main中检查args。您可能需要类似于
return 1
exit(1)
的内容,而不是中断。

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

break语句终止最近的封闭语句的执行 do、for、switch或while语句,它在其中出现


要离开函数,请使用
return
标题中的错误消息说明一切:
break
只能用于退出循环或防止案例失败。MSDN报价:

break语句终止最近的封闭语句的执行 do、for、switch或while语句,它在其中出现


要离开函数,请使用
return

中断应该在循环中使用


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

中断应该在循环中使用


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

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

#include <stdio.h>
#include <stdlib.h>
或者,如果您想在显示该消息后继续该程序,您可以执行以下操作:

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
}

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

#include <stdio.h>
#include <stdlib.h>
或者,如果您想在显示该消息后继续该程序,您可以执行以下操作:

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
}

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

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

#include <errno.h>
return EINVAL;

然后,您发出信号,表示程序由于错误而终止,返回值特别指出错误是无效参数。

其他答案是正确的,这只是一个轻微的添加

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

#include <errno.h>
return EINVAL;
然后,您发出信号,表示程序由于错误而终止,返回值特别指出错误是无效参数

“中断”只会使您脱离最内部的循环或开关。您可以随时使用“return”退出函数

break语句只能出现在迭代语句或switch语句中,并终止包含该语句的最小语句的执行

这也很有意义——您可以使用“return”从方法中“escape”,也可以使用if/else跳过其他情况下的代码。我不知道案件之外的“休息”会有什么效果

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

“中断”只会使您脱离最内部的循环或开关。您可以随时使用“return”退出函数

break语句只能出现在迭代语句或switch语句中,并终止包含该语句的最小语句的执行

这也很有意义——您可以使用“return”从方法中“escape”,也可以使用if/else跳过其他情况下的代码。我不知道案件之外的“休息”会有什么效果

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


但这就是我编译时遇到的错误。一个拥有1787年声誉的人怎么会问这样的问题呢?@James theop来自SQL。不是C.-1“这个问题没有显示任何研究成果”,但这是我编译时遇到的错误。。一个拥有1787年声誉的人怎么会问这样的问题?@James TheOP来自SQL。不是C.-1“这个问题没有显示任何研究成果”我想退出C程序。@Vutukuri:那么你需要
返回
。如果条件失败,我想退出程序。。这就是我在else条件下写break语句的原因。或exit(1);还有#include if OP还没有这个指令。“这就是我写break的原因”——为什么不写“立即退出这个程序;”?虽然它和使用break一样,没有试图学习或理解C,并且会被标记为语法错误,但至少它表达了您的意图。我想退出C程序。@Vutukuri:那么您需要
返回
。如果我的If条件失败,我想退出该程序。。这就是我在else条件下写break语句的原因。或exit(1);还有#include if OP还没有这个指令。“这就是我写break的原因”——为什么不写“立即退出这个程序;”?然而,就像使用break一样,它并没有试图学习或理解C,并且会被标记为语法错误