我的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;
}
答案 0 :(得分:9)
它看起来的方式我认为你不是在一个循环而只是检查main中的args。你可能想要return 1
或exit(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',因为这是使它工作的唯一方法。在任何其他情况下,有更好的方法来完成同样的事情。这同样适用于'继续'。