strlen求字符串长度


   
  #include <stdio.h>
  
main()
{
char *a="ATSn0\121";
char *b="ATSn01\21";
char *c="ATS\n0121";
char *d="ATSn\0121";
char *e="ATSn'\0'121";
char f[1]={'c'};
char g[2]={'c',0x00};
printf("%d\n",strlen("ATS\n012\1\\"));
printf("%d\n",strlen(a));
printf("%d\n",strlen(b));
printf("%d\n",strlen(c));
printf("%d\n",strlen(d));
printf("%d\n",strlen(e));
printf("%d\n",strlen(f));
printf("%d\n",strlen(g));
}

输出结果:

输出

“\”的位置影响了strlen的结果,strlen扫描到'\0'则停止,这些都是明面上的原因,结合输出分析下具体原因,还有f和g的原因。
这些原因应该可以解释strlen()的方法了吧,求高人总结.

c C++

想养布偶的时颜 12 years, 8 months ago

strlen就是扫描到'\0',也就是0x00结束。
上面输出的结果都是因为\ooo(o为八进制数)转义的原因。

宅男不会飞 answered 12 years, 8 months ago

Your Answer