这段代码的含义:for(i = 0; argv [1] [i]!='\ 0'; i ++)

时间:2016-09-05 09:56:33

标签: c string command-line argv

我从名为“学习C艰难的方式”的书中找到了这段代码,但我无法理解其中的含义和目的:

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

3 个答案:

答案 0 :(得分:3)

主要根据C标准的参数声明为

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

相当于

int main( int argc, char ** argv )

argv指向指向字符串第一个字符的指针数组的第一个元素。

因此argv[1]是指向第二个参数的第一个字符的指针(第一个参数是程序名称)。例如,*argv[1]argv[1][0]是以零结尾的字符串的第一个字符。

例如,如果您的程序像

一样运行
your_program Hello

然后命令行参数像字符串"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 :(得分:0)

argv[1]是字符串数组argv中的第二个字符串,字符串是字符数组,因此argv[1][0]是第二个字符串中的第一个字符,{ {1}}是第二个字符串中的第二个字符,依此类推。

答案 2 :(得分:-1)

对于传递给程序的参数中的每个字母,它创建一个名为letter的变量,该变量具有该值 我认为它用于for循环的以下行。