/* strchr */ /* 该函数用来查找一个字符串中某个字符第一次出现的位置 */ /* 如果找到:返回绝对地址. 没有找到:返回NULL */ char* /* 返回字符串第一次出现的绝对位置 */ my_strchr ( const char* src, /* 被查找的字符串 */ char ch /* 需要查找的字符 */ ) { while(*src != ch) /* 从第一个字符开始测试, 如果不相等就返回NULL */ { if(*src == '\0') return NULL; src++; /* 指向下一个字符 */ } return (char*)src; /* 这个返回只有当第一个字符即为要查找的字符才会从这里返回 */ }
/* strrchr */ /* 该函数返回某个字符在字符串中最后一次出现的位置 */ /* 找到:返回绝对位置. 未找到:返回NULL */ char* my_strrchr ( const char* src, /* 被查找的字符串 */ char ch /* 要查找的字符 */ ) { const char* ptr; for(ptr = NULL;; ++src) /* 从第一个字符开始匹配 */ { if(*src == ch) /* 没找到一次重新赋值一次 */ ptr = src; if(*src == '\0') /* 到达结尾 */ return (char*)ptr; }
}
/* string.h -> strcpy */ char* /* 返回目标字符数组地址 */ my_strcpy( char* dst, /* 目标字符数组 */ const char* src /* 源字符数组 */ ) { char* ptr = dst; /* 指向目标字符数组, 以使函数能返回目标地址 */ while(*ptr++ = *src++) /* 直到为 \0 才停止复制 */ ; return dst; /* 返回目标地址 */ } 说明:这并不是一个安全的字符串复制函数, 如果目标数组的长度小于源操作数数组长度, 则会导致缓冲区溢出, 其它内存被修改, 参考安全版本的 strcpy_s();
size_t /* 返回字符串的长度 */
my_strlen(
const char* src /* 被计算长度的字符串 */
)
{
const char* ptr = src; /* 定义一个指针指向源字符串 */
while(*ptr) /* 把指针 ptr 定位到源字符串的结尾的'\0'处 */
++ptr;
return ptr - src; /* 相减即得字符串长度 */
}
这个函数应该是一个安全的版本
本文详细介绍了几个常用的字符串操作函数:my_strchr用于查找字符串中某字符首次出现的位置;my_strrchr用于查找字符串中某字符最后一次出现的位置;my_strcpy实现字符串复制;my_strlen计算字符串长度。这些函数在实际编程中非常实用。
1051

被折叠的 条评论
为什么被折叠?



