一、使用strlen()函数来读取字符串数组的长度(错误写法)
#include <stdio.h>
#include<string.h>
int main()
{
// 使用双引号初始化字符数组
char str[] = "hello";
// 使用花括号初始化字符数组
char str2[] = {'h','e','l','l','o'};
printf("%d",strlen(str)); // 5
printf("\n");
printf("%d",strlen(str2)); // 10
}
二、使用strlen()函数来读取字符串数组的长度(正确写法)
写法一:
#include <stdio.h>
#include<string.h>
int main()
{
// 使用双引号初始化字符数组
char str[] = "hello";
// 使用花括号初始化字符数组
char str2[] = {'h','e','l','l','o','\0'}; // 加'\0'结束符
printf("%d",strlen(str)); // 5
printf("\n");
printf("%d",strlen(str2)); // 5
}
写法二:
#include <stdio.h>
#include <string.h>
int main()
{
// 使用双引号初始化字符数组
char str[] = "hello";
// 使用花括号初始化字符数组
char str2[] = {'h','e','l','l','o'};
printf("%d",strlen(str)); // 5
printf("\n");
printf("%zu", sizeof(str2)/sizeof(str2[0])); // 5
}
strlen()函数的代码运行,可以简单的理解为,不断地寻找字符串中的'\0'字符,不断地计次,找到了就停止计次。strlen函数的大致原型:
size_t strlen(const char* str) {
size_t length = 0;
while (*str != '\0') {
length++;
str++;
}
return length;
}
理解了strlen()函数的大致原理,在实际的使用中就不会出现太多问题了。