这段代码的含义:for(i=0;argv[1][i]!='\0';i++)
meaning of this code :for(i=0;argv[1][i]!='\0';i++)
我从名为 "Learn C the hard way" 的书中找到了这段代码,但我无法理解其含义和用途:
for(i=0;argv[1][i]!='[=10=]';i++){
char letter=argv[1][i];
对于传递给程序的参数中的每个字母,它都会创建一个具有该值的名为 letter 的变量。
我认为它用于for循环的以下行。
argv[1]
是字符串数组argv
中的第二个字符串,而字符串是字符数组所以argv[1][0]
是第二个字符串中的第一个字符,argv[1][1]
是第二个字符串中的第二个字符,依此类推。
根据 C 标准声明带有参数的 main 像
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]!='[=13=]';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] != '[=14=]'; j++ ) putchar( argv[i][j] );
printf( "\n" );
}
return 0;
}
我从名为 "Learn C the hard way" 的书中找到了这段代码,但我无法理解其含义和用途:
for(i=0;argv[1][i]!='[=10=]';i++){
char letter=argv[1][i];
对于传递给程序的参数中的每个字母,它都会创建一个具有该值的名为 letter 的变量。
我认为它用于for循环的以下行。
argv[1]
是字符串数组argv
中的第二个字符串,而字符串是字符数组所以argv[1][0]
是第二个字符串中的第一个字符,argv[1][1]
是第二个字符串中的第二个字符,依此类推。
根据 C 标准声明带有参数的 main 像
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]!='[=13=]';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] != '[=14=]'; j++ ) putchar( argv[i][j] );
printf( "\n" );
}
return 0;
}