目录
1.strlen()函数功能
2.strlen()函数的使用
2.1 数组
3.注意事项
1.strlen()函数功能
strlen()函数 用于 计算 指定字符串的 长度,但 不包括 结束字符(打印字符串长度)。
2.strlen()函数的使用
切记添加头文件 #include <string.h>
方法一:直接通过 printf()函数 + strlen()函数 打印出字符串的长度
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "abc";// "abc" -- 'a' 'b' 'c' '\0'
printf("字符串arr1的数据长度为:%d\n", strlen(arr1));
return 0;
}
运行结果
方法二:利用 ifelse语句 比较字符串长度大小,并输出结果
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include <string.h>
int main()
{
char arr1[] = "abcdef";// 定义并初始化含有6个元素的字符型数组
char arr2[] = "abc";// 定义并初始化含有3个元素的字符型数组
if (strlen(arr2) - strlen(arr1) > 0)// 将数组arr2[]的长度减去数组arr1[]的长度,得到一个常量与0比较
{
printf("arr2>arr1\n");// 数组arr2[]的长度大则输出此条语句
}
else printf("arr2<arr1\n");// 数组arr1[]的长度大则输出此条语句
return 0;
}
运行结果
方法三:将数据存入数组后,计算数据长度,并连同数组一起打印
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
char name[10];
int num;
strcpy(name, "Gavin");// 把含有'\0'结束符的字符串"Gavin"复制到name所在的地址空间
num = strlen(name);// 计算name[]数组长度
printf("My name is %s.It's %d words long\n", name, num);//打印信息
return(0);
}
运行结果
3.注意事项
以下通过两个程序来举例
例1:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
char arr1[] = "abc";// "abc" -- 'a' 'b' 'c' '\0'
// '\0'是字符串的结束标志
char arr2[] = {'a', 'b', 'c'};// 'a' 'b' 'c'
printf("%s\n", arr1);
printf("%d\n", strlen(arr1));
printf("%s\n", arr2);
printf("%d\n", strlen(arr2));
return 0;
}
输出结果中出现乱码
例2:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char arr1[] = "abc";// "abc" -- 'a' 'b' 'c' '\0'
// '\0'是字符串的结束标志
char arr2[] = {'a', 'b', 'c', 0};// 'a' 'b' 'c' '\0'
printf("%s\n", arr1);
printf("%d\n", strlen(arr1));
printf("%s\n", arr2);
printf("%d\n", strlen(arr2));
return 0;
}
输出结果能够正常得到预期结果
结论:字符串的结束标志是一个" \0 "的转义字符。在计算字符串长度的时候" \0 "是结束标志,不算字符串内容。如果没有结束标志,则程序可能沿着数组在内存中的位置不断向前寻找,直到遇见空字符才会停止。
★C语言学习6:数据类型 -> 基本类型 -> 整型类型(int、short int、long int、char等)
★C语言学习9:This function or variable may be unsafe. (Visual Studio 2013关于scanf函数报错的解决办法)