达人来帮我看看这个程序的结果是什么,谢谢(顺便散分)

zzitmf 2005-06-16 09:14:37
#include <string.h>
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf("%d\n",len);
} 经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44
执行后输出结果是()
为什么?我有结果,就是不知道为什么
...全文
211 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
sea2000cn 2005-06-22
  • 打赏
  • 举报
回复
学习!
jixingzhong 2005-06-22
  • 打赏
  • 举报
回复
mark!!
Audi_TT 2005-06-17
  • 打赏
  • 举报
回复
up
Flood1984 2005-06-17
  • 打赏
  • 举报
回复
int argc ,char *argv[ ]
主要是不理解这些参数,什么意思?
同时怎么编译运行,我在TC上试了,根本行不通
----------------------
运行得在DOS下进入ex.exe索在得目录输入:
ex abcd efg h3 k44
光在TC下是不能调试的。
kunp 2005-06-16
  • 打赏
  • 举报
回复
http://blog.csdn.net/kunp/archive/2005/01/07/243592.aspx

这篇文章专门讲到main的参数,看看吧
kunp 2005-06-16
  • 打赏
  • 举报
回复
输出的结果是6阿,因为你求得第一个参数和第三个参数的字符串长度和阿
strlen("abcd") + strlen("h3")

下面这个程序应该对你了解argc, argv会有所帮助,

---------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
int i = 0;
int len = 0;
for(i = 1; i < argc; i += 2)
{
len += strlen(argv[i]);
printf("argv[%d] : %s\n", i, argv[i]); //打印你计算的参数及其长度
}
printf("%d\n\n",len);


printf("now look here\n");
//打印参数的总个数
printf("argc: %d\n", argc);

//打印所有参数
for(i = 0; i < argc; i++)
{
printf("argv[%d] : %s\n", i, argv[i]);
}

system("PAUSE");
return 0;
}
zhousqy 2005-06-16
  • 打赏
  • 举报
回复
应该是6啊.
Bsq28 2005-06-16
  • 打赏
  • 举报
回复
结果应该是 6 吧。
ex abcd efg h3 k44
总体来讲应该是五个参数,其中
argv[0] = "ex"
argv[1] = "abcd"
argv[2] = "efg"
argv[3] = "h3"
argv[4] = k44
那个FOR 循环, 步长是2 , 计算字符串长度之和的,



rick29 2005-06-16
  • 打赏
  • 举报
回复
argc是包括可执行文件名的程序参数个数,你这里argc就等于5
argv是各个参数组成的数组,你这里
argv[0] = "ex"
argv[1] = "abcd"
argv[2] = "efg"
...

然后看程序,应该没啥问题了吧?
kobefly 2005-06-16
  • 打赏
  • 举报
回复
#include <string.h>
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf("%d\n",len);
}

经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44

这样的话,argc == 5
argc[0] = "ex";
argc[1] = "abcd";
.....
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
所以
len = strlen("abcd") + strlen("h3") = 6
summerICEREDTEA 2005-06-16
  • 打赏
  • 举报
回复
我输出6啊
naturemickey 2005-06-16
  • 打赏
  • 举报
回复
结果是6,就是“abcd”和“h3”的长度和。
charles_ju 2005-06-16
  • 打赏
  • 举报
回复
老大:ex就是文件名啊,还有啊argc,argv可以随便找一本书查一下啊,很简单的啊,这个你调试的时侯一定要选择参数的啊,否则不能调试的啊
zzitmf 2005-06-16
  • 打赏
  • 举报
回复
int argc ,char *argv[ ]
主要是不理解这些参数,什么意思?
同时怎么编译运行,我在TC上试了,根本行不通
heskyII 2005-06-16
  • 打赏
  • 举报
回复
//我反对。

#include <string.h>
main(int argc ,char *argv[ ])
{ int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
printf("%d\n",len);
} 经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
ex abcd efg h3 k44

//我得到的结果:8。
//原因如下:argc 指的是你输入的参数个数,虽然这里只输入了5个(argv[1],argv[2],argv[3],argv[4],argv[5])。但还有一个系统默认的参数argv[0],它存放的是该程序的程序名(具体是什么记不住了,呵呵)。所以在循环中,取了argv[1],argv[3],argv[5],它们的总长度因该是8。
tian_su 2005-06-16
  • 打赏
  • 举报
回复
有四个参数,abcd efg h3 k44
i=1;i<argc;i+=2
当i=1和i=3时,计算长度strlen(argv[i]);
输出长度和
6

应该是很详细了吧
twjneedstudy 2005-06-16
  • 打赏
  • 举报
回复
mark!!
mostideal 2005-06-16
  • 打赏
  • 举报
回复
mark!!
trackant 2005-06-16
  • 打赏
  • 举报
回复
6,argv[0]是ex自己,而不是ex程序的第一个参数,这个是比较容易误解的地方
foochow 2005-06-16
  • 打赏
  • 举报
回复
mark!
加载更多回复(3)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧