#include <stdio.h> #include<string.h> void main() {printf("%d\n",strlen("AST\n012\1"));}

用c++运行结果为什么是8,不应该是9吗?

AST\n012\1
这个字符串,中\n是一个换行符号,认为是一个字符的.
所以是8个.

你这样,运行就知道.
#include <stdio.h>
#include<string.h>

void main()
{
printf("%s\n","AST\n012\1");
printf("%d\n",strlen("AST\n012\1"));
}追问

\n是一个字符我晓得,但是AS T \n 0 1 2 \这不是已经8个了,后面还有一个1呢?

追答

\1这里的 \是转义符号,不在字符统计范围.
\1这里也是一个字符.

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-20
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',“AST\n012\1”是8个啊。追问

最后那个\1是一个字符吗?

追答

"\1"是一个转义字符“SOH”,表示"标题开始",算一个字符长度。每个转义字符(“\0”除外)都算一个字符长度。

相似回答