字符串函数的模拟实现
strlen
的使用和模拟实现
strlen
的原型是: size_t strlen(const char* str);
, 功能是求字符串长度, 统计的是\0
之前的字符个数.
需要注意的是:
- 返回值是
size_t
无符号类型. - 参数指向的字符串必须是以
'\0'
结尾
size_t my_strlen1(const char* str) { |
strcpy
的使用和模拟实现
strcpy
的原型是: char* strcpy(char* destination, const char* source);
, 功能是将源字符串包含'\0'
拷贝到目标字符串.
需要注意的是:
- 源字符串必须以
\0
结束 - 拷贝时会将源字符串的
'\0'
也拷贝到目标空间 - 目标空间足够大, 以确保可以存放源字符串
- 目标空间必须可修改
char* my_strcpy(char* dest, const char* src){ |
strcat
的使用和模拟实现
strcat
的原型是: char* strcat(char* destination, const char* source);
, 功能是将源字符串包含'\0'
连接到目标字符串的末尾'\0'
处.
需要注意的是:
- 源字符串必须以
\0
结束 - 目标字符串也得有
'\0'
, 否则不知道从哪里开始连接 - 拷贝时会将源字符串的
'\0'
也拷贝到目标空间 - 目标空间足够大, 以确保可以存放源字符串
- 目标空间必须可修改
|
思考: 使用这个函数能不能实现字符串和自己连接? 不行, src 的'\0'
被修改了, 导致字符串拷贝不能正常结束
strcmp
的使用和模拟实现
strcmp
的原型是: int strncmp (const char* str1, const char* str2, size_t num );
, 比较两个字符串的大小(比较的不是长度, 而是字符串中对应位置的ASCII码值 的大小)
需要注意的是:
- C 语言只规定了 str1 > str2, 返回 > 0 的数, str1 < str2, 返回 < 0 的数, str1 = str2, 返回 0
|
以上均为长度不受限制的字符串函数, 那什么是长度受限制的字符串函数? 看下面:
写在最后
使用字符串库函数要包含string.h
头尾文件哦, 自己动手试一试吧~
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Bradey 😏😏!