08春C语言

来源:百度知道 编辑:UC知道 时间:2024/06/14 16:09:12
若有声明"char s1[10]="ABCDE",s2[10]="A\\0";"则语句printf("%d",strlen(strcpy(s1,s2)));的结果是3,为什么

输出的是:3.

strlen是计算一串字符的长度,参数是一串字符,或者指向字符串的指针,返回长度大小。

strcpy(s1,s2)是将串s2复制到串s1中,覆盖原来的。返回指向s1的指针

格式化输出 "%d" 的意思以十进制有符号的形式输出。

printf("%d",strlen(strcpy(s1,s2))); 该语句则是向屏幕打印s1的长度咯。

注意:s2[10]="A\\0";编译器首先把紧接着A的两个右斜杠(\\)当成转义字符单右斜杠(\),接着是一个字符0.

如果s2[10]="A\\\0";则在内存中为……|A|\|\0|……字符串长度为2

如果s2[10]="A\011B";则在内存中为……|A|\t|B|\0|……即字符‘A’, 然后是水平制表符,接着是字符‘B’.\0是字符串结束标志。
计算"AB\0flajsdljfsdlfjlsdfjsdflsdkjf alsdjf"的长度就是2.

以上可以用【printf("%s",strlen(strcpy(s1,s2)));】输出字符串试试看看
--------------------------------------------------------------
\a:蜂鸣,响铃
\b:回退:向后退一格
\f:换页
\n:换行,光标到下行行首
\r:回车,光标到本行行首
\t:水平制表
\v:垂直制表
\\:反斜杠
\':单引号
\":双引号
\?:问号
\ddd:三位八进制
\xhh:二