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:数组

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
C语言strlen函数的底层实现可以有多种方法。下面是三种常见的实现方法: 方法一:遍历计数法 这种方法是最常见的实现方式。它通过遍历字符串的每个字符,直到遇到字符串结束符'\0'为止,同时计数字符的个数。具体实现可以参考引用\[2\]的代码。 方法二:递归法 递归法是另一种实现方式。它通过递归地调用自身来计算字符串的长度。具体实现可以参考引用\[1\]的代码。 方法三:strnlen函数 strnlen函数是C标准库提供的函数,用于计算字符串的长度。它可以指定最大计算的字符数,避免了遍历整个字符串的开销。具体实现可以参考引用\[3\]的代码。 这些方法都可以用来计算字符串的长度,选择哪种方法取决于具体的需求和性能要求。 #### 引用[.reference_title] - *1* [【C语言进阶:刨根究底字符串函数strlen 函数](https://blog.csdn.net/JX_BC/article/details/129503957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [【C语言strlen()函数](https://blog.csdn.net/weixin_47970952/article/details/126149644)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C语言常用函数详解STRLEN()](https://blog.csdn.net/Cdy126/article/details/130724386)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

學不董Gavin

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

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

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

打赏作者

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

抵扣说明:

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

余额充值