请问输出是多少?答案是12,为什么?strlen应该是统计字符串个数,不包含'\0',那我也数不出12呀,abcdefghjik只有11个啊!(我晕了)
----------------解决方案--------------------------------------------------------
有以下程序
#include <stdio.h>
main()
{FILE *fp; int i=20,j=30,k,n;
fp=fopen("d1.dat","w");
fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n); printf("%d%d\n",k,n);
fclose(fp);
顺便问问,此题答案是20,50。其中50如何得来?望解释,
再此劳烦各位C界前辈了!
----------------解决方案--------------------------------------------------------
#include <string.h> main(int argc,char *argv[]) {int i,len=0; for(i=1;i<argc;i++) len+=strlen(argv[i]); printf("%d\n",len); }
为什么输出是9?
----------------解决方案--------------------------------------------------------
晕啊,妹妹。
我运行了你的程序,结果全都对啊
第一个:输出5
第二个:20,30
第三个:0
----------------解决方案--------------------------------------------------------
流星雨姐姐你还在努力的学C语言啊~~~ 老师最近终于给我们布置作业了~真多~很久都没上来看看了。 好,少废话,先看问题。
[1] 我们知道:一个字符串是以'\0'作为它的结尾标志的。 那么对于 abcde\0fghjik\0 来说其实这里有两个字符串。 他们分别是: abcde\0 和 fghjik\0 前一个的长度是5,后一个是6。 如果把*p认为是指向一个字符串的首地址,那么*p表示的字符串仅仅是abcde\0这个而已。这也就是楼上答案5的由来。
[2] 2050?你能得到50吗?那我也没话说了,把你的AMD拆下来好好降降温再试一次。答案是2030
[3] 这个是调用了主函数(main)的参数的问题。 首先我们先得了解main各个参数的作用。 其实也就2个~
1.argc参数。这个参数是个int的变量。它表示着外部命令输入的参数的个数,它最少不能少过1。 2.argv参数。这个就是很明显的啦,是一个不定长度的指针数组。 其中: argv[0]指向程序名(包括路径) argv[1]指向第一个参数 argv[2]指向第二个参数 . . . . argv[n]指向第N个参数
有了上面的知识我们就很容易理解你所问的问题了。
for(i=1;i<argc;i++) len+=strlen(argv[i]); 的作用是得到所有参数的字符数。
如果把你的程序取名为dd.exe,并且把它放在C:\下,那么在DOS命令符下我们输入 dd p 则程序就会输出1,这个是因为p只有1个字符的缘故。 当然啦,如果你输入pp 或者p<空格>p都输出2。 如果你什么参数都不输入则输出0。这就是楼上的答案为什么是0的原因
[此贴子已经被作者于2004-09-15 16:03:11编辑过]
----------------解决方案--------------------------------------------------------
楼上说的对啊,我也试了没有错啊!
----------------解决方案--------------------------------------------------------
最后一个写掉了一句,
(40)有以下程序 #include <string.h> main(int argc,char *argv[]) {int i,len=0; for(i=1;i<argc;i++) len+=strlen(argv[i]); printf("%d\n",len); } 程序编译连接后生成的可执行文件是ex1.exe, 若运行时输入带参数的命令行是: ex1 abcd efg 10<回车> 则运行的结果是?
答案是9,
其他的我也敢确定是答案错了,不过我没有把握,因为那是书上所写,不过非常感谢你神vLinux飘飘,为我写出如此详细解答,年龄上我长你一岁,但在学问上小女自叹不如!
----------------解决方案--------------------------------------------------------
for(i=1;i<argc;i++) len+=strlen(argv[i]); 的作用是得到所有参数的字符数。
那为何输入 ex1 abcd efg 10 会是9?空格不算也有12个数字啊?
----------------解决方案--------------------------------------------------------
ex1是argv[0]
----------------解决方案--------------------------------------------------------
KNOCKER说得没错,你不能把ex1(程序名)也算成是参数啊!
真正的参数只有 abcd efg 10 不计空格正好9个
----------------解决方案--------------------------------------------------------