//字符串的长度相关问题
//strlen()求得字符串长度不包含'\0'
//strlen返回unsigned int类型
//sizeof(arr)/sizeof(arr[0])求得长度包含'\0'
void string_len(){
char str1[] = "abcdef";
char str2[] = {'a','b','c','d','e','f'};
char str3[] = {'a','b','c','d','e','f','\0'};
printf("%u\n",strlen(str1));//输出6
printf("%u\n",strlen(str2));//输出14 结果是变化的,arr2[]中没有'\0',会一直向后扫描到'\0'才会停止
printf("%u\n",strlen(str3));//输出6
printf("---------------------------------------------\n");
printf("%u\n",sizeof(str1)/sizeof(str1[0]));//输出7 计算长度的时候计算了'\0'
printf("%u\n",sizeof(str2)/sizeof(str2[0]));//输出6 结果是变化的,arr2[]中没有'\0',会一直向后扫描到'\0'才会停止
printf("%u\n",sizeof(str3)/sizeof(str3[0]));//输出7
printf("---------------------------------------------\n");
printf("%s\n",str2);
}
计算字符串长度的几种方法
//利用递归求字符串的长度
int my_strlen(char* str){
if(*str != '\0')
return 1+my_strlen(str+1);
else
return 0;
}
void str_len(){
char arr[]="abc";
int len = my_strlen(arr);
printf("%d\n",len);
}
//利用指针计算字符串长度
int my_strlen2(char* str){
int count=0;
while(*str != '\0'){
count++;
str++;
}
return count;
}
void str_len2(){
int len = my_strlen2("abcdef");
printf("%d\n",len);
}
//利用指针相减计算字符串长度
int my_strlen3(char* str){
char* pc = str;
while(*str != '\0'){
str++;
}
return (str-pc);
}
void str_len3(){
int len = my_strlen3("abcdef");
printf("%d\n",len);
}