c语言,计算字符串长度

NO.1charx[12]="ab\n\\012\\\";printf("%d",strlen(x));答案:9NO.2charstring[]="ab\0123";pr... NO.1
char x[12]="ab\n\\012\\\";
printf("%d",strlen(x)); 答案:9
NO.2
char string[]="ab\0123";
printf("%d",strlen(string)); 答案:2
NO.3
char string[]="\t\"\085\xff\n";
printf("%d",strlen(string)); 答案:2
麻烦给个详解!谢谢!
展开
 我来答
gangjia2010
2011-04-06 · 超过12用户采纳过TA的回答
知道答主
回答量:43
采纳率:0%
帮助的人:37.5万
展开全部
首先是你的No1: char x[12]="ab\n\\012\\\"; 这句貌似是错误的,调试不能通过。在结尾加上n就是改为:char x[12]="ab\n\\012\\\n";后程序才能运行。结果是9的原因是: for(i = 0;i<10;i++){ printf("%c,",x[i]);} 在程序中加入这句话就明白了。 显示的字符依次为 : a,b,换行,\,1,2,\,\,换行。

后面的同理你加上for(i = 0;i<10;i++){ printf("%c,",x[i]);} 这句话 自己调试什么都明白了
追问
请问0字符呢? 我觉得输出 字符依次为 : a,b,换行,\,0,1,2,\,换行。对吗?
追答
对就是你说的a,b,换行,\,0,1,2,\,换行。 打错了。 呵呵
\0 本来为结束符,但是在No1中为什么没有结束呢? 原因是程序在读到“\”时,就要看“\”后面是什么,NO1中第一个\后面是n,因此“\n”就是换行,而第二个"\"后面仍然是“\”,“\\”连在一块就想到与一个字符“\”,而NO2,NO3中“\0”前都没有“\”,因此No2 No3中遇到“\0”都停止。
公羊乃2P
2011-04-06 · TA获得超过297个赞
知道小有建树答主
回答量:230
采纳率:0%
帮助的人:250万
展开全部
#include <stdio.h>

void fun(char *s)
{
int len=0;
while(*s!='\0')
{
len++;
printf("%c %d \n",*s,len);
s++;
}
}

int main()
{
char x[12]="ab\n\\012\\\"";
fun(x);
return 0;
}

这个是NO.1的答案9的结果计算过程,你运行下即可。
还有是char x[12]="ab\n\\012\\\""; 你给的题目少了个"。
其它NO.2 NO.3你自己带进去看看,望你能理解,如果不能,继续深入学习!
我给的fun函数也是strlen(char *c)函数的原理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kcophy
2011-04-06
知道答主
回答量:5
采纳率:0%
帮助的人:8140
展开全部
printf 函数:是看到结束字符‘\0’时,就计算到此处的长度,楼主的字符串中有结束符,所以就长度就是结束符前面的字符串的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
liyangdal
2011-04-06
知道答主
回答量:22
采纳率:0%
帮助的人:22.2万
展开全部
\0等于字符串结束
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式