1

このプログラムは、引数を入力させる代わりにクラッシュし続けます。なぜですか?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, const char* argv[]) {
    int shift = atoi(argv[1]);
    char message[256];
    strcpy(message, argv[2]);
    int i;

    for (i = 0; i < strlen(message); i++) {
        printf("%c", message[i] + shift);
    }
    putchar('\n');

    return 0;
}

コードブロックを使用しています。しかし、Notepad ++でも実行しようとしました。コンパイルして実行すると、単純にクラッシュします。Name.exe が動作を停止しました。コマンドラインで引数を入力するように求めるべきではありませんか?

4

1 に答える 1

7

プログラムが起動する前に引数を入力する必要があるため、引数を入力する前にプログラムがクラッシュすることはありません。

つまり、次のようにプログラムを実行しないでください。

Program.exe
12
hello

次のように実行する必要があります。

Program.exe 12 hello

IDE を使用している場合 (おそらく使用しているでしょう)、引数を追加するように IDE を構成する必要があります。その方法は、使用する IDE によって異なります。Visual Studio を使用していると仮定します。Visual Studio で行う方法は次のとおりです: https://stackoverflow.com/a/3697320/794380

于 2013-09-28T23:01:28.237 に答える