#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
我错过了什么吗?
答案 0 :(得分:2)
您的第一个版本的八进制数\056
不是\0
字符
编辑:
在类似的情况下使用\000
八进制序列代替:
/* from your example*/ char a[100]="1234\000567";
答案 1 :(得分:1)
\056
是单个字符,八进制ASCII码(56) 8 ,十进制 - (46) 10 。