main(int argc,char *argv[])

#include <stdio.h>
main(int argc,char *argv[])
{ int i ,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf("%5d\n",len);
}
生成文件ex.exe输入命令 ex abcd efg h3 k44
求输出结果
帮分析下
argv[0]不是应该是ex ,答案是8,我也感觉i=5是已经跳出循环
最新回答
酒爷

2024-11-23 14:29:16

分析如下:

argc是所有参数的个数,包括可执行文件名
所以输入命令:ex abcd efg h3 k44
argc的值是 5

至于 *argv[]也可以写成**argv或者argv[][],是个二级指针。或者是指向二维数组的行的指针!
故argv[i]是指向第i个参数对应的字符串的第一个字符的地址,指向分别如下:

argv[0] -> ex
argv[1] -> abcd
argv[2] -> efg
argv[3] -> h3
argv[4] -> k44

所以对于for循环语句,
i = 1时,len = 0 + strlen(argv[1]) = 0 + strlen("abcd") = 0 + 4 = 4
接着,i += 2 ==> i = 1 + 2 = 3
然后,len = len + strlen(argv[3]) = 4 + strlen("h3") = 4 + 2 = 6
再来,i += 2 ==> i = 3 + 2 = 5
此时,由于argc = 5,故i不满足 i < argc 这个条件,跳出for循环。
最后 printf("%5d\n",len);打印len的值,故结果是 6 。由于是以%5d输出,所以6前有4个空格。
矮胖病!

2024-11-23 10:10:49

应该是第1,3,5命令参数的字符串长度之和

也就是

strlen("ex") + strlen("efg") + strlen("k44")

结果应该是2+3+3=8
月光很浅思念很暖

2024-11-23 14:53:39

argc=5,argv[1]='abcd', argv[3]='h3'
所以应该是6
再美都是荒涼

2024-11-23 15:24:08

不同意楼上的观点,是argv[1],argv[3]的和。就是
strlen("abcd")+strlen("h3")=6