2

Windows で C++ を使用してコマンドライン引数を解析する際に、どういうわけか問題が発生しています。これを使ってみた

int main(int argc, char **argv)
{
    std::cout << "Command-line argument count: " << argc << " \n";
    std::cout << "Arguments:\n";
    for (int i = 0; i < argc; i++)
        std::cout << "  argv[" << i << "]   "
        << argv[i] << "\n";

    return 0;
}

これと同様に

int main(int argc, char *argv[])
{
    std::cout << "Command-line argument count: " << argc << " \n";
    std::cout << "Arguments:\n";
    for (int i = 0; i < argc; i++)
        std::cout << "  argv[" << i << "]   "
        << argv[i] << "\n";

    return 0;
}

変数argcargvは、どういうわけか初期化されていないようです。プログラムを起動すると、次のように返されます。

Z:\Dev\ProcessSuspender\Debug>ProcessSuspender a
Command-line argument count: 2130558976
Arguments:
  argv[0]
  argv[1]   ╠ÉÉÉÉÉj↑h╚♂YwÞØ÷■ âe³
  argv[2]

(以下のクラッシュ)

/SUBSYSTEM:CONSOLEリンカーオプションを使用してMSVC12でコンパイルしました。この問題の原因は何ですか?

4

4 に答える 4

1

VS 2012 であなたのプロジェクトを試してみましたが、スムーズに動作しています。getchar(); を追加しました。以下のようにコマンド:

#include <iostream>

int main(int argc, char *argv[])
{
    std::cout << "Command-line argument count: " << argc << " \n";
    std::cout << "Arguments:\n";
    for (int i = 0; i < argc; i++)
        std::cout << "  argv[" << i << "]   "
        << argv[i] << "\n";
    getchar();
    return 0;
}

私は出力を見ることができるように。

[プロジェクト] -> [プロパティ] -> [デバッグ] -> [コマンド引数] を右クリックします。

これは私のプロジェクトでは空で、問題をシミュレートするために文字 a を追加しました。

ここに私が得ている出力があります:

プロジェクトを右クリック -> デバッグ -> 新しいインスタンスを開始 -> ビルドしますか -> はい

出力:

Command-line argument count: 2
Arguments:
  argv[0]   <my macines path>\helpingStack1.exe
  argv[1]   a

これをもう一度確認してください。これが役立つことを願っています。

1) このスクリプトを実行するとき、バイナリが最新ではないのではないかと疑っています。そのため、クリーン ビルドを実行し、ビルドしているものと同じ exe を実際に実行していることを確認してください。構成を確認してください - デバッグ/リリース。

2) プロジェクトを作成したフォルダに移動し、プロジェクト フォルダを右クリックして、プロパティを変更します -> チェック ボックスで読み取り専用がチェックされていないことを確認します。

于 2014-12-26T08:11:33.643 に答える
0

明らかに、IDE やプロジェクト、またはシステム上のその他のセットアップに何か問題がある可能性があります。コードは完璧です。

コマンドプロンプトから実行して、出力exeを直接かつ独立して実行しようとしましたか??

任意の引数を指定してコマンド プロンプトで exe を実行し、出力を確認します。

于 2014-12-26T09:03:05.547 に答える
-1

プロジェクトのプロパティ - >一般で文字セットを確認する価値があります。

于 2014-12-26T08:41:30.770 に答える