ここでのポイントを完全に見逃している可能性がありますが、Visual Studio の cpp プログラムで引数を出力する次の方法があります。
int _tmain(int argc, char* argv[])
{
char* fu = "Bar";
std::cout << "Test, " << argc << ", " << argv[0] << ", " << argv[1] << ", " << fu << endl;
printf("%s, %s, %s", argv[0], argv[1], fu);
return 0;
}
私が抱えている問題は、文字列全体ではなく、引数の最初の文字のみを出力するように見えることです。
私が知る限り、argv[0] は argv 配列を逆参照して char* を取得します。これが cout/printf 関数に渡されます。次に、\0 文字までのすべての文字を出力する必要があります。
テスト char* fu を作成して、関数に char* を渡すことに問題があるかどうかを確認しましたが、'Bar' が正常に出力されました。
私が考えることができる唯一のことは、コンパイル時に fu のサイズがわかっているためであり、argv のサイズはコンパイルされた方法で何かおかしいことではないということです。
文字をループすることで内容を印刷できることはわかっていますが、これはポイントを無効にしているようです。たとえば、比較のために文字列を操作したい場合などです。誰かが何が起こっているのか説明してもらえますか?