如何统计指针数组中各元素内容的长度?含示例说明
获取C语言指针数组中字符串的长度
当然可以实现!在C语言里,要统计指针数组中每个字符串元素的长度,最常用也最便捷的方式就是借助标准库的strlen()函数,下面给你详细说明:
方法一:使用标准库strlen()函数
首先要记得包含头文件<string.h>,因为strlen()是定义在这个头文件里的。直接遍历你的指针数组,对每个元素调用strlen()就能得到对应的字符串长度。
示例代码如下:
#include <stdio.h> #include <string.h> #define MAX 2 // 对应你例子里的数组大小 int main() { char *str[MAX] = {"kendrick", "lamar"}; // 逐个遍历指针数组元素 for (int i = 0; i < MAX; i++) { // strlen()会自动统计到字符串结束符'\0'的字符数(不含'\0') int length = strlen(str[i]); printf("str[%d] 的内容长度是:%d\n", i, length); } return 0; }
运行这段代码后,输出会是:
str[0] 的内容长度是:8
str[1] 的内容长度是:5
完全符合你的预期~
方法二:手动实现长度统计函数
如果不想依赖标准库,也可以自己写一个简单的函数来统计字符串长度,逻辑和strlen()一致:
#include <stdio.h> #define MAX 2 // 自定义字符串长度统计函数 int my_strlen(const char *s) { int count = 0; // 遍历到字符串结束符'\0'停止 while (*s != '\0') { count++; s++; } return count; } int main() { char *str[MAX] = {"kendrick", "lamar"}; for (int i = 0; i < MAX; i++) { int length = my_strlen(str[i]); printf("str[%d] 的内容长度是:%d\n", i, length); } return 0; }
注意事项
- 一定要保证指针数组中的每个元素都指向以
'\0'结尾的合法字符串,如果是野指针或者指向非字符串的内存区域,使用strlen()或者自定义函数都会导致未定义行为(程序崩溃或输出错误结果)。 strlen()返回的是size_t类型(无符号整数),如果需要和int类型一起使用,要注意类型转换的问题(不过在大多数日常场景中直接赋值给int也不会有问题)。
内容的提问来源于stack exchange,提问作者Dingani Makamo
相关产品推荐
相关产品推荐

