1

私の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;
        }
4

6 に答える 6

9

見た目はループではなく、メインの引数をチェックしているだけだと思います。おそらく休憩の代わりにreturn 1またはのようなものが必要です。exit(1)

于 2012-08-22T19:38:14.017 に答える
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
}
于 2012-08-22T19:42:49.903 に答える
3

タイトルのエラー メッセージがすべてbreakを物語っています。ループを終了するか、ケースの失敗を防ぐためにのみ使用できます。MSDN の引用:

break ステートメントは、それが現れる最も近い do、for、switch、または while ステートメントの実行を終了します。

関数を終了するには、 を使用しますreturn

于 2012-08-22T19:40:55.287 に答える
3

Break はループで使用することになっています。

returnステートメントを使用すると、実行が現在のサブルーチンから離れ、サブルーチンが呼び出された直後のコード内のポイント (戻りアドレス) から再開されます。

于 2012-08-22T19:42:31.447 に答える
1

他の答えは正しいです、これはほんの少しの追加です。

おそらくこの特定のケースで戻るには、次errno.hのように含める必要があります。

#include <errno.h>

そしてさらにこのように戻ります:

return EINVAL;

次に、エラーが原因でプログラムが終了していることを通知し、戻り値はエラーが無効な引数であることを具体的に示しています。

于 2012-08-22T19:57:22.240 に答える