1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【C】模拟实现strlen strcpy strcat strcmp strncpy syrcat strnact strncmp strstr等字符串函数

【C】模拟实现strlen strcpy strcat strcmp strncpy syrcat strnact strncmp strstr等字符串函数

时间:2022-08-06 12:55:26

相关推荐

【C】模拟实现strlen strcpy strcat strcmp strncpy syrcat strnact strncmp strstr等字符串函数

目录

字符串函数模拟实现

1、strlen模拟实现

2、strcpy模拟实现

3、strncpy模拟实现

4、strcat模拟实现

5、strncat模拟实现

6、strcmp模拟实现

7、strncmp模拟实现

8、strstr模拟实现

9、测试案例代码

字符串函数模拟实现

1、strlen模拟实现

size_t my_strlen(const char* str){assert(str);size_t ret = 0;while (*str){str++;ret++;}return ret;}

2、strcpy模拟实现

char* my_strcpy(char* dest, const char* src){assert(dest && src);char* ret = dest;while (*dest++ = *src++){;}return ret;}

3、strncpy模拟实现

char* my_strncpy(char* dest, const char* src, size_t sz){assert(dest && src);char* ret = dest;while (sz){*dest++ = *src++;sz--;}if (sz){while (--sz){*dest++ = '\0';}}return dest;}

4、strcat模拟实现

char* my_strcat(char* dest, const char* src){assert(dest && src);char* ret = dest;while (*dest){dest++;}while (*dest++ = *src++){;}return ret;}

5、strncat模拟实现

char* my_strncat(char* dest, const char* src,int sz){assert(dest && src);char* ret = dest;while (*dest){dest++;}while (sz--){*dest++ = *src++;}dest = '\0';return ret;}

6、strcmp模拟实现

int my_strcmp(const char* str1, const char* str2){int ret = 0;while (*str1 == *str2){if (*str1 == '\0'){return 0;}str1++;str2++;}//代码一//if (*str1 > *str2)//{//return 1;//}//else//{//return -1;//}//代码二return *str1 - *str2;}

7、strncmp模拟实现

int my_strncmp(const char* str1, const char* str2,int sz){int ret = 0;while (sz-- && !(ret = (unsigned char)*str1 - (unsigned char)*str2)){str1++;str2++;}return ret;}

8、strstr模拟实现

char* my_strstr(const char* str1,const char* str2){assert(str1 && str2);const char* s1 = str1;const char* s2 = str2;char* cp = str1;while (*cp){s1 = cp;s2 = str2;while (*s1 && *s2 && (* s1 == *s2)){s1++;s2++;}if (*s2 == '\0'){return cp;}cp++;}return NULL;}

9、测试案例代码

int main(){char arr1[30] = "hello world";char arr2[50] = "sakura0908";printf("arr2的长度为 %zd\n", my_strlen(arr2));char arr3[30] = { 0 };my_strcpy(arr3, arr2);printf("arr3 = %s\n", arr3);char arr4[30] = { 0 };my_strncpy(arr4, arr2, 6);printf("arr4 = %s\n", arr4);char arr5[50] = "csdn";my_strcat(arr2, arr5);printf("追加arr5之后的arr2为:%s\n", arr2);char arr6[50] = "123456789";my_strncat(arr2, arr6, 5);printf("追加arr6之后的arr2为:%s\n", arr2);char arr7[50] = "sakura0908csdn12345";if (!my_strcmp(arr2, arr7)){printf("arr2和arr7相同\n");printf("arr2 = %s\narr7 = %s\n", arr2, arr7);}else{printf("arr2和arr7不相同\n");printf("arr2 = %s\narr7 = %s\n", arr2, arr7);}char arr8[50] = "sakura0908.";if(!my_strncmp(arr2, arr8,12)){printf("arr2和arr8相同\n");printf("arr2 = %s\narr8 = %s\n", arr2, arr8);}else{printf("arr2和arr8不相同\n");printf("arr2 = %s\narr8 = %s\n", arr2, arr8);}return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。