求救:C语言,为什么l等于0,不应等于3么?(本人新手,望勿喷)

#include<stdio.h>#include<string.h>intmain(){chara[1000],b[1000]={0};inti,j,k=0,l;get... #include<stdio.h>
#include<string.h>
int main()
{
char a[1000],b[1000]={0};
int i,j,k=0,l;
gets(a);
j=strlen(a);
for(i=0;i<j;i++)
{
if(a[i]==' '&&(a[i+1]>=65&&a[i+1]<=90||a[i+1]>=97&&a[i+1]<=122))
b[k++]=i;
}
b[k]=j;
l=strlen(b);

printf("%d,%d,%d,%d,%d,%d,%d,%d,",i,j,k,l,b[0],b[1],b[2],b[3]);
printf("\n");
return 0;
展开
 我来答
1132159366
2013-08-14 · TA获得超过186个赞
知道小有建树答主
回答量:218
采纳率:100%
帮助的人:156万
展开全部
是这样的,因为你一开始就输入了空格,所以一开始当i等于0的时候就把0存到b这个字符数组里面去了,而0存进字符数组里面去的时候是'\0',是字符串结束的表示,所以你的b数组前面几个元素是这样的:吧b[0]=0;b[1]=2;b[2]=2,b[3~……]=0,
然后用strlen获取b字符串长度的时候,当读到第一个字符的时候,就读到了结束标志,所以你的strlen(b)就为0;所以你的l就成0了,你第一个字符不输入空格我估计应该会正确。
应该就是这样的。。- -!
猛兽04
2013-08-14
知道答主
回答量:20
采纳率:0%
帮助的人:14.6万
展开全部
是等于8啊,没有错,意思就是你在a数组输入的' ' 和65到90和97到122的字符的个数就是b数组的长度,l就是b数组的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冽夕枫
2013-08-15
知道答主
回答量:23
采纳率:100%
帮助的人:17.3万
展开全部
strlen(b)遇终止符'\0'(整数值为0,也是NULL)结束,因为b[0]=0,即b[0]='\0',所以不管b[0]之后是否有数据都没用,strlen是测不出的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式