2016-04-07 18 views
-3

私はargv [0]値とargv [3]値が変わる理由を説明しなければならないので、この割り当て(文字列を入力して文字列の数を表示)をします。あなたがプログラムを踏んだとき、私の文字列入力は「私の茶色の牛をどうやって実行するか」argv [0]は私のディレクトリフォルダ( "/ home/013/w/wn /%$%$%#%/ Assignment4/argv [3]はargv [2]になければならないので、私はこれらの変数がなぜ変わるのか分かりません。プログラムは、冒頭でARGV []配列は、最後にすべてのものに対応してコンパイルしますが、なぜないここ C++でargvをクリアする

はコードです:?

#include <stdio.h> 

/* print a given string and a number in a pre-determined format. */ 
void 
print_string(int num, char* string) 
{ 
    printf("String '%d' - '%s'\n", num, string); 
} 

int 
main(int argc, char* argv[]) 
{ 
    int i; 

    /* check for command line arguments */ 
    if (argc < 2) { /* 2 - 1 for program name (argv[0]) and one for a param. */ 
     printf("Usage: %s [<string> ...]\n", argv[0]); 
     return(1); 
    } 

    /* loop over all strings, print them one by one */ 
    for (argc--,argv++,i=0 ; argc > 0; argc--,argv++,i++) { 
     print_string(i, argv[0]); /* function call */ 
    } 

    printf("Total number of strings: %d\n", i); 

    return 0; 
} 
+7

'argv [0]'はプログラムを呼び出すためのファイル名です。実際のコマンドライン引数は 'argv [1 ...]'に格納されます。 –

+0

@BenVoigtは私にそれを打ちます – Nacho

+2

プログラム実行中に変化しますなぜなら、あなたは実際には嫌にされるスタイルであるパラメータ( 'argc - 、argv ++')を実際に修正するからです。 –

答えて

1

配列インデックスが0で開始し、argvの最初の要素はパスですこのようにバイナリを実行すると、実行されたファイルの内容は次のようになります。

./test run how now brown cow 

あなたはargvで、次の要素を取得します:

argv[0] = "./test" 
argv[1] = "run" 
argv[2] = "how" 
argv[3] = "now" 
argv[4] = "brown" 
argv[5] = "cow" 

あなたが見ることができるように、今では、第二要素第3回ではなく上にあることをば完全に右です。

関連する問題