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
麻烦给个详解!谢谢! 展开
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
麻烦给个详解!谢谢! 展开
4个回答
展开全部
首先是你的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]);} 这句话 自己调试什么都明白了
后面的同理你加上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”都停止。
展开全部
#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)函数的原理。
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)函数的原理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
printf 函数:是看到结束字符‘\0’时,就计算到此处的长度,楼主的字符串中有结束符,所以就长度就是结束符前面的字符串的长度
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询