C语言学习11:strlen()函数详解

目录

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 "是结束标志,不算字符串内容。如果没有结束标志,则程序可能沿着数组在内存中的位置不断向前寻找,直到遇见空字符才会停止。

—————————END—————————

往期回顾

★C语言学习6:数据类型 -> 基本类型 -> 整型类型(int、short int、long int、char等)

★C语言学习7:ASCII码表及用法简介

★C语言学习8:全局变量和局部变量

★C语言学习9:This function or variable may be unsafe. (Visual Studio 2013关于scanf函数报错的解决办法)

★C语言学习10:数组

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

學不董Gavin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值