「Cを難しい方法で学ぶ」という本からこのコードを見つけましたが、このコードの意味:for(i = 0; argv [1] [i]!= ' 0'; i ++)
for(i=0;argv[1][i]!='\0';i++){
char letter=argv[1][i];
「Cを難しい方法で学ぶ」という本からこのコードを見つけましたが、このコードの意味:for(i = 0; argv [1] [i]!= ' 0'; i ++)
for(i=0;argv[1][i]!='\0';i++){
char letter=argv[1][i];
主は、文字列の最初の文字へのポインタの配列の最初の要素に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;
}
プログラムに渡される引数の各文字について、その値を持つletterという変数を作成します。
私はそれが次の行のforサイクルで使用されると思います。
argv[1]
は、文字列配列argv
における2番目の文字列であり、argv[1][0]
が第2ストリングで最初の文字になるように文字列は文字列であり、argv[1][1]
は、第2ストリング等で第二文字です。 C標準に従ってパラメータで
argv [1]が最初のパラメータであるため、argv [0]はプログラム名です – Wallkan
は一冊の本を読むことができ、あなたは理解します。 – alk
このコードは不完全であり、意味がありません –
正確には理解できません。ループ構造?配列の添字?ループ内での宣言? –