2012-08-22 37 views
1

我在C代码中收到此错误。我不知道我做错了什么。如果我评论这段代码,我的程序就可以工这段代码在int main()内部。中断语句不在循环内或在C中切换

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

但这就是我编译时得到的错误。 – Teja

+0

1787声望的人怎么会问这样的问题? – James

+3

@James OP来自SQL。不是C. – Mysticial

回答

9

它看起来我觉得你不是在一个循环中,但只是检查ARGS在主要的方式。你可能想要像return 1exit(1)而不是中断。

+0

我想出来的C程序。 – Teja

+0

@Vutukuri:那么你需要'返回'。 – Tudor

+0

如果我的条件不成功,我想退出程序..这就是我在其他条件下写入break语句的原因。 – Teja

3

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

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

要离开功能使用return

3

中断应该用在循环中。

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

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 

你只能像这样在循环中使用break:

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

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

要在这种特定情况下可能回来,你应该包括errno.h这样的:

#include <errno.h> 

,进而返回这样的:

return EINVAL; 

然后你发出的信号,该节目被终止由于错误和返回值明确指出错误是无效的参数。

1

'break'只会让你离开最内层的循环或开关。您可以随时使用'返回'退出功能。

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

它也是有意义的 - 你可以用“返回”方法“逃避”,并且你可以在其他情况下用if/else跳过代码。我不知道在案子之外会有什么“突破”。

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