strlen()甚至在null终止符后计算字符

时间:2017-08-06 08:47:19

标签: c string-length

#include<stdio.h>
#include<string.h>

int main() {
char a[100]="1234\0567"; //Answer: 6
int len=strlen(a);
printf("%d",len); 
}

此代码打印6作为答案。不应该打印4,因为strlen返回计数直到遇到空字符?

但是当\ 0和5之间包含空格时,它将返回4作为答案

char a[100]="1234\0 567"; //Answer: 4

我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

您的第一个版本的八进制数\056不是\0字符

编辑: 在类似的情况下使用\000八进制序列代替:

/* from your example*/ char a[100]="1234\000567";

答案 1 :(得分:1)

\056是单个字符,八进制ASCII码(56) 8 ,十进制 - (46) 10