2016-09-05 27 views
-5

「Cを難しい方法で学ぶ」という本からこのコードを見つけましたが、このコードの意味:for(i = 0; argv [1] [i]!= ' 0'; i ++)

for(i=0;argv[1][i]!='\0';i++){ 
    char letter=argv[1][i]; 
+2

は一冊の本を読むことができ、あなたは理解します。 – alk

+1

このコードは不完全であり、意味がありません –

+0

正確には理解できません。ループ構造?配列の添字?ループ内での宣言? –

答えて

3

主は、文字列の最初の文字へのポインタの配列の最初の要素にargv点である

int main(int argc, char ** argv) 

に相当する

int main(int argc, char * argv[]) 

ように宣言されています。

したがって、argv[1]は、2番目のパラメータの最初の文字へのポインタです(最初のパラメータはプログラム名です)。たとえば、*argv[1]またはargv[1][0]は、ゼロ終了文字列の最初の文字です。例えば

あなたのプログラムは、コマンドラインパラメータが文字列"Hello"のようなプログラムに渡され

your_program Hello 

のように実行された場合。そして、このループ

for(i=0;argv[1][i]!='\0';i++){ 
    char letter=argv[1][i]; 

は、終了ゼロに遭遇するまで文字列をトラバースします。

あなたは文字で出力すべてのパラメータの文字を次のよう

#include <stdio.h> 

int main(int argc, char * argv[]) 
{ 
    for (int i = 0; i < argc; i++) 
    { 
     for (int j = 0; argv[i][j] != '\0'; j++) putchar(argv[i][j]); 
     printf("\n"); 
    } 

    return 0; 
} 
-1

プログラムに渡される引数の各文字について、その値を持つletterという変数を作成します。
私はそれが次の行のforサイクルで使用されると思います。

0

argv[1]は、文字列配列argvにおける2番目の文字列であり、argv[1][0]が第2ストリングで最初の文字になるように文字列は文字列であり、argv[1][1]は、第2ストリング等で第二文字です。 C標準に従ってパラメータで

+0

argv [1]が最初のパラメータであるため、argv [0]はプログラム名です – Wallkan

関連する問題