は、私がchar **argv
を持っていると仮定します。ダブルポインタchar型の操作
まず、どのように私はargv
内のすべての文字列をプリントアウトすることができますか?私は、次のことを試してみました。ここで
char *temp;
temp = *argv; // Now points to the first string?
while (temp != NULL) {
printf("%s ", temp);
temp++;
}
、temp
がインクリメントされたときに、それだけで一つの文字をスキップします。なぜそれが起こっているのですか?私はargv
がポイントを保持する配列であることを知っています。各ポインタは、char*
の配列を指しています。もしそうなら、なぜこれは機能しませんか?私はtemp
がタイプchar
であるため、そのポインタをインクリメントする1
文字(またはバイト)で、それをインクリメントすることを知っています。もしそうなら、どうすればポインタを次の配列にインクリメントし、その文字列を出力できますか?
argvの最後の要素はnullですか?私はこれが配列の終わりからはずれると予想します。 – Collin
@CollinHockey:はい、標準ではそれが必要です。 C99規格の5.1.2.2.1を参照してください。 –
@CollinHockey:OPの中断的な試みに踏み込んで、私はそのように仮定します。また、他に明白な終了条件がないためです。 Oli:OPは、我々が標準の 'main'引数を扱っているとは言っていませんが、私たちが行うふりをしましょう。 –