1

コマンドライン引数を取り、引数カウントとともに表示するこのプログラムを C で作成しました。ただし、引数は、入力された引数の数よりも 1 つ多くなっています。

#include<stdio.h>
 void main(int argc, char *argv[])
 {
 int i=0;
 for(i=0;argv[1][i]!='\0';i++)
 {
  if(argv[1][i]>='a' && argv[1][i]>='z')
  {
   argv[1][i]=argv[1][i];
  }
   }
  printf("%s",argv[1]);
  printf("\n");
  printf("%d",argc);
 }

私が渡す引数:アッパーアブラカダブラ。カウントは 3 です。理由は何でも構いません。前もって感謝します

4

4 に答える 4

4

C 配列はゼロベースであるため、有効なインデックスは [0..argc] で実行されることに注意してください。あなたのプログラムはチェックをスキップしargv[0]ます。

指定した引数に加えて、argv[0]プログラム名 (プラットフォームが名前を判別できない場合は NULL) に設定されます。

コマンドライン引数を確認したい場合は、次のようにすることができます

int i;
for (i=0; i<argc; i++) {
    printf("argv[%d] = %s\n", i, argv[i]);
}
于 2013-05-27T16:59:17.663 に答える
1

実際、argv[0] はプログラムの名前を保持し、プログラムが子をフォークするときにそれを使用します。C で fork() を呼び出すと、親プロセスと同じ名前の子プロセス (a.out など) が生成されます。子は、argv[0] から親の名前を取得します。したがって、すべてのものには目的の権利があります。

于 2013-12-19T15:56:26.457 に答える
0

これは、argvコマンド ライン引数を保持しないためです。完全なコマンドラインを保持します。最初の 1 つはコマンドで、残りは引数です。

于 2013-05-27T17:00:48.260 に答える