求字符串长度
一、strlen函数
1.strlen函数是C语言标准库中的一个函数,用于计算字符串的长度。这个函数从字符串的起始位置开始计数,直到遇到第一个空字符'\0',然后返回计数器的值。这个长度不包括终止的空字符。
size_t strlen(const char *str);
2.注意:
①其中,size_t是一个无符号整数类型,表示大小(无符号整数类型永远>=0)。
②const char *str是指向字符数组(字符串)的指针,该字符串以空字符'\0'结尾。
#include <iostream> #include <string.h> using namespace std; int main() { char str[100]; cin>>str; cout<<strlen(str); return 0; }
3.sizeof与strlen的区别
sizeof是一个编译时计算的操作符,它返回变量声明后所占的内存大小。
strlen是一个运行时计算的函数,它返回字符串的实际长度,不包括空字符。
例如,对于声明char str[20] = "Hello";
:
• sizeof(str)
将返回20,因为这是数组分配的内存大小。
• strlen(str)
将返回5,这是字符串"Hello"的实际长度。
4.自定义实现
strlen函数可以通过多种方式实现,例如使用计数器、递归或指针操作。以下是一些自定义实现strlen函数的示例代码:
// 使用计数器 size_t my_strlen(const char *str) { size_t count = 0; while (*str != '\0') { count++; str++; } return count; } // 使用递归 size_t my_strlen_recursive(const char *str) { if (*str == '\0') { return 0; } else { return 1 + my_strlen_recursive(str + 1); } } // 使用指针 size_t my_strlen_pointer(const char *str) { const char *p = str; while (*p != '\0') { p++; } return p - str; }