重写部分C库函数只是为了提升我对代码的理解力和编程逻辑,以下代码仅提供参考,如果你有更好的建议欢迎提出。
字符串复制方法: 本质上是循环读取被复制数组src的每一个字符串,然后给目标数组dest依次赋值,直到'\0'结束符停止,完成字符串拷贝复制(被复制数组容量必须足够大,至少要大于目标数组容量,否则无法完成复制)。点击这里看详细介绍
// 字符串复制函数
char *mystrcpy(char *dest, const char *src) {
char *dest_p = dest;
const char *src_p = src;
while (*src_p != '\0') {
*dest_p = *src_p;
dest_p++;
src_p++;
}
*dest_p = '\0';
return dest;
}
字符串长度计算方法: 一直遍历字符串的每一个字符,直到遍历到'\0'结束符,就停止计次,计次的次数就是字符串的长度(如果字符串中没有'\0'结束符,此函数可能会无限循环或计算出错)。点击这里看详细介绍
// 字符串长度计算函数
int mystrlen(char *str) {
char *start = str;
int len = 0;
while (*start != '\0') {
start++;
len++;
}
return len;
}
字符串转小写方法: 使用循环去遍历字符串中的每一个字符,判断字符的ASCII码值是否在范围内,小写字母的ASCII码范围是: 97(a) - 122(z),大写字母的ASCII码范围是: 65(A) - 90(Z),大写字符转小写字符+32,小写字符转大写字符-32。点击这里看详细介绍
// 字符串转小写函数
char *mystrlwr(char *str) {
char *start = str;
while (*start != '\0') {
int ascii = (int)*start;
if(ascii >= 65 && ascii <= 90) {
*start = (char)(ascii + 32);
}
start++;
}
return str;
}
实现方法参考上方
// 字符串转大写函数
char *mystrupr(char *str) {
char *start = str;
while (*start != '\0') {
int ascii = (int)*start;
if(ascii >= 97 && ascii <= 122) {
*start = (char)(ascii - 32);
}
start++;
}
return str;
}
字符串拼接方法: 遍历被拼接的字符串数组dest,直至遍历到'\0'结束符的位置停止,将来拼接的字符串数组src依次取出字符拼接在被拼接的数组的最后一个字符之后,需要注意的是拼接生成的新字符串后面要加'\0'(被拼接的字符串数组dest容量必须足够大,足够容纳src的字符串)。点击这里看详细介绍
// 字符串拼接函数
char *mystrcat(char *dest, const char *src) {
char *dest_p = dest;
const char *src_p = src;
while (*dest_p != '\0') {
dest_p++;
}
while (*src_p != '\0') {
*dest_p = *src_p;
src_p++;
dest_p++;
}
*dest_p = '\0';
return dest;
}
字符串比较方法: 两个字符串自左向右逐个字符相比(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。如:。点击这里看详细介绍
// 字符串比较函数
// str1 == str2 0
// str1 < str2 负数
// str1 > str2 正数
int mystrcmp(const char *str1, const char *str2) {
const char *str1_p = str1;
const char *str2_p = str2;
while (*str1_p == *str2_p && *str1_p != '\0') {
str1_p++;
str2_p++;
}
return *str1_p - *str2_p;
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。