【问题标题】:Break statement not within loop or switch in CBreak 语句不在循环内或在 C 中切换
【发布时间】:2012-08-22 19:37:10
【问题描述】:

我的 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;
        }

【问题讨论】:

  • 但这就是我编译时遇到的错误..
  • 1787 声望的人怎么会问这种问题?
  • @James OP 来自 SQL。不是 C。
  • -1 "这个问题没有显示任何研究工作"

标签: c if-statement break


【解决方案1】:

它看起来的方式我认为你不是在循环中,而只是在 main 中检查 args。您可能想要return 1exit(1) 之类的东西,而不是break。

【讨论】:

  • 我想退出C程序。
  • @Vutukuri:那你需要return
  • 如果我的 if 条件失败,我想退出程序。这就是我在 else 条件中编写 break 语句的原因。
  • 或退出(1);如果 OP 还没有该指令,也可以使用 #include
  • "这就是我写break的原因" -- 为什么不写"exit this program;"?虽然它就像使用 break 一样,没有显示出学习或理解 C 的尝试,并且会被标记为语法错误,但至少它表达了您的意图。
【解决方案2】:

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

#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
}

【讨论】:

    【解决方案3】:

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

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

    要离开函数,请使用return

    【讨论】:

      【解决方案4】:

      Break 应该在循环中使用。

      使用 return 语句,这会导致执行离开当前子例程,并在调用子例程后的代码点(返回地址)处继续执行。

      【讨论】:

        【解决方案5】:

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

        要在这种特定情况下返回,您应该像这样包含errno.h

        #include <errno.h>
        

        然后像这样返回:

        return EINVAL;
        

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

        【讨论】:

          【解决方案6】:

          'break' 只会让你跳出最里面的循环或开关。您可以随时使用“return”退出函数。

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

          这也很有意义 - 您可以使用 "return" 从方法中“退出”,并且可以在其他情况下使用 if/else 跳过代码。我不知道案件之外的“休息”会做什么。

          'break' 无论如何只是'goto' 的一种受限形式。理想情况下,您需要从任何代码块中单点退出。你真的应该只在 switch 语句中使用'break',因为这是让它工作的唯一方法。在任何其他情况下,有更好的方法来完成同样的事情。这同样适用于“继续”。

          【讨论】:

            猜你喜欢
            • 2014-12-28
            • 1970-01-01
            • 1970-01-01
            • 2016-07-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-22
            相关资源
            最近更新 更多