C语言三个函数的模拟实现详解

目录

  • 一、strcpy
  • 二、模拟实现strcat
  • 三、strcmp
  • 总结:

一、strcpy
//模拟实现strcpy#include#includechar* my_strcpy(char*dest, char*str){ assert(dest && str); char* tmp = dest; while (*str != '\0') {*dest = *str; dest++; str++; } *dest = '\0'; return tmp; }int main(){ char arr1[20] = "xxxxxxxxxxxxxxx"; char arr2[] = "study hard!"; my_strcpy(arr1, arr2); printf("%s\n", arr1); return 0; }

C语言三个函数的模拟实现详解
文章图片


二、模拟实现strcat 思路:先找到目标字符串的\0位置,然后停下
用两个指针扫描目标字符串和源字符串,并赋值
在源字符串添加完成后,加上’\0‘
//模拟实现strcat//字符串追加#include#includechar* my_strcat(char* dest, const char* str){ assert(dest && str); char* tmp = dest; //找到目标的尾巴 while (*dest != '\0') {dest++; } //链接字符串 while (*dest++ = *str++) {; } *dest = '\0'; return tmp; }int main(){ char arr1[20] = "hello"; char arr2[] = " world!"; my_strcat(arr1, arr2); printf("%s\n", arr1); return 0; }

C语言三个函数的模拟实现详解
文章图片


三、strcmp 要注意,strcmp不是比较两字符串的长度,而是逐位比较字符的ASCII码值
//模拟实现strcmp 返回的不是1 -1,而是正数,负数#include#includeint my_strcmp(const char* str1, const char* str2){ assert(str1&&str2); while (*str1 == *str2) {if (*str1 == '\0'){return 0; }str1++; str2++; } return *str1 - *str2; }int main(){ char arr1[] = "abcdef"; char arr2[] = "abcder"; int ret=my_strcmp(arr1, arr2); if (ret < 0) {printf("<\n"); } else if (ret == 0) {printf("=\n"); } else {printf(">\n"); } return 0; }

C语言三个函数的模拟实现详解
文章图片


总结: 多多实现库函数的模拟可以更好地认识指针。
【C语言三个函数的模拟实现详解】本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

    推荐阅读