2017-08-06 115 views
2
#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會返回計數,直到遇到空字符?strlen()即使在空終止符後也計數字符

但是當包括\ 0和5之間的空間,它返回4的答案

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

我缺少的東西?

回答

2

你第一個版本有八進制數\056不是\0字符

編輯: 在類似的情況下使用,而不是\000八進制序列:

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

或'char a [100] =「1234 \ 0」「567」;' – chux

+0

@chux確實:) –

1

\056是單個字符,與八進制ASCII碼(56),十進制 - (46)。