簡體   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