私は文字配列にコマンドライン引数を渡すの二つの方法が見つかりました:AIXシステム上のIBM XLCコンパイラでコンパイルargv文字配列の割り当てを処理するにはどうすればよいですか?
int main (int argc, char **argv)
{
const char *s1 = argv[0];
char s2[256];
strcpy(s2, argv[0]);
printf("s1: %s\ns2: %s\n\n", s1, s2);
}
は[MyPrompt]>
./a.outを返し./a.out
S1:
S2 ./a.out:
どの実装(s1またはs2)が正しいですか? argv [0]は任意の長さにすることができるので、s1はいいです。 s2では、argv [0] <の長さが256文字である必要があります。
s1がどのように動作するのかわかりません。私はだと思います。コンパイル時にs1の右側が必要ですが、は実行時に生成されると考えています()。
その場合、int mainの引数を(const int argc、const char ** argv)に変更しないでください。 – Pete
あなたは移植性がない唯一の理由があります:それを受け入れないコンパイラがある可能性があります。 – quark
constはC言語に新たに追加されたもので、main()は古代のC言語の子供時代に定義されて以来、const装飾はありません。 しかし、char *はconst char *に変換できるので、矛盾を心配する必要はありません。 –