C语言strlen问题,char a[] = {'a','b'}; strlen(a)的值?。。。

char a[] = {'a','b'};
char b[] = {'b','c'};
char c[] = {'a','b'};
printf("%d,%d,%d\n",strlen(a),strlen(b),strlen(c));
三个结果不一样。。。?而且都不是2。

第1个回答  2011-03-22
strlen函数是对以0结尾的字符串计算长度的。所以你的程序这样改就可以了:
char a[] = {'a', 'b', '\0'};
char b[] = {'a', 'b', '\0'};
char c[] = {'a', 'b', '\0'};
printf("%d,%d,%d\n",strlen(a),strlen(b),strlen(c));本回答被提问者采纳
第2个回答  2011-03-22
//加'\0'就是2了。
#include <stdio.h>
#include <string.h>
int main()
{
char a[] = {'a','b','\0'};//字符串以'\0'结尾!
char b[] = {'b','c','\0'};//字符串以'\0'结尾!
char c[] = {'a','b','\0'};//字符串以'\0'结尾!
printf("%d,%d,%d\n",strlen(a),strlen(b),strlen(c));
return 0;
}
第3个回答  2011-03-22
strlen不检查\0,所以不是2
char a[] = {'a', 'b', '\0'};
char b[] = {'a', 'b', '\0'};
char c[] = {'a', 'b', '\0'};
所以是这个