多增加了一个字节个数,即拷贝几个字节,更加有了限制
这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!
6.strncat
多增加了一个字节个数,即追加几个字节,更加有了限制
这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!
多增加了一个字节个数,即比较几个字节,更加有了限制
这样会更多考虑源字符串和目的字符串的空间大小,更加的严谨!!
代码如下(示例):
法一:计数器方式
#include#includeint my_strlen(char* p) { assert(str); //防止str为空指针 int count = 0; while (*p++) { count++; } return count; } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%d", ret); return 0; }
法二:递归,不创建临时变量
#include#includeint my_strlen(char *str) { if (*str== '\0') { return 0; } else { return my_strlen(str+1) + 1; } } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%d", ret); }
法三:指针减指针
#include#includeint my_strlen(char* str) { char* p = str; while (*p!= '\0') { p++; } return p - str; } int main() { char arr[] = "abcdef"; int ret = my_strlen(arr); printf("%d", ret); }
代码如下(示例):
#include#includechar * my_strcpy(char* dest, const char* src) { assert(dest && src); char* p = dest; while (*dest++ = *src++); return p; } int main() { char arr1[] = "aaaaaaaaa"; char arr2[] = "bbbbbbbb"; my_strcpy(arr1,arr2); printf("%s", arr1); }
代码如下(示例):
先找斜杠零,再拷贝.
#include#includechar* my_strcat(char* dest,const char* src) { char* p = dest; assert(dest && src); while (*dest) { dest++; } while (*dest++ = *src++); return p; } int main() { char arr1[20] = "aaaaaa"; char arr2[] = "bbbbbbbb"; my_strcat(arr1,arr2); printf("%s", arr1); return 0; }
代码如下(示例):
#include#includeint my_strcmp(const char* str1, const char* str2) { assert(str1 && str2); //法一 while (*str1) { while (*str1 != *str2) { return *str1 - *str2; } str1++; str2++; } return 0; //法二 while (*str1 == *str2) { if (*str1=='\0') return 0; str1++; str2++; } return *str1 - *str2; } int main() { char arr1[] = "abddd"; char arr2[] = "abc"; int ret=my_strcmp(arr1,arr2); if (ret > 0) printf("str1大\n"); else if (ret < 0) printf("str2大\n"); else printf("一样大\n"); return 0; }
void my_strncat(char* dest, char* src, int n) { while (*dest) { dest++; } while (n--) { *dest++= *src++; } *dest = '\0'; } int main() { char arr1[6] = "aa"; char arr2[] = "bbbbb"; my_strncat(arr1, arr2,3); printf("%s", arr1); }
在使用字符串函数的时候,要注意的是函数的返回值和参数的使用,以及源字符串和目的字符串的空间大小!
我们下期再见!
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者