[英]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 1
或exit(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.