谁帮我分析下程序过程??求解噢


  1. a = 5   strlen(str),首先strlen()是一个函数,求的是从str开始到‘\0’结束字符的个数,但是不包括'\0',那么"china"的长度就是5;

  2. b = 5  "china\0chinese"因为 strlen()是遇到'\0'就停止的,所以计算的是前面chin的卜橡长度

  3. strcat(a,b)是将b连在a后侍明面,strcat(str,"chinese") = "chinachinese",它的长度是china 5+chinese 7 = 12

  4. 首先\x12代表的是一个字符,代表的是x12是一个16进制数,'\x12’代表的就是ascii码为12的那个字符,同理'\345'是代表ascii码为345那个字符,\n是回车,\r是换行符,所以最后是

    ‘\x12, \345, \n,\r,d,s,f,f  一共8个字符

  5. \12,\x4a,\34,8,z,b  6个

  6. 补充一点一般‘\12’如果不带x,这个默认是8进制的数,'\12'就是八进型谈旁制的,4中‘\345’就是八进制的,算一个字符,而5中‘\348’为什么不是一个字符,是因为八进制不可能出现8,所以这个是分开的‘\34’ 和‘8’


int main(void){
int a,b,c,d,e;
char str[128]="china";/*
初始化字符数组帆轿str[],str[0]='c',str[1]='h',...,str[5]='a',str[6]='\耐轿碰0',注意字符串结束符是'\0'*/
a=strlen(str);/*5,有效字符个数,不含'\0',*/
b=strlen("china\0chinese");/*5,\0strlen函数遇到'\0'认为该字符串结束,函数也结束了*/
c=strlen(strcat(str,"chinese"));/*5+7=12,strcat后,str为"chinachinese"*/
d=strlen("\x12\345\n\昌谈rdsff");/*8,字符分别是'\x12','\345','\n','\r',..*/
e=strlen("\12\x4a\348zb");/*6*,字符分别是'\12','\x4a','\34','8','z','b'*/
/*注意:'\123',表示八进制的123,'\x4a',表示16进制的4a*/
printf("a=%d b=%d c=%d d=%d e=%d\n",a,b,c,d,e);
return 0;
}