C和指针之字符串简单实现 strcpy、strcat、strstr函数

来源:互联网 发布:网络销售模式有哪些 编辑:程序博客网 时间:2024/05/20 13:09

1、实现strcpy函数

#include <stdio.h>//简单实现strcpy函数char *my_strcpy(char *des, const char *src){if (des == NULL || src == NULL)return des;char *result = des;while ((*des++ = *src++) != '\0');return result;}int main(){char des[20];const char *src = "chenyu";printf("des is %s, and my_strcpy result is %s\n", des, my_strcpy(des, src));return 0;}

结果:

des is chenyu, and my_strcpy result is chenyu






2、实现 strcat函数

#include <stdio.h>//简单实现strcat函数char *my_strcat(char *des, const char *src){if (des == NULL || src == NULL)return des;char *result = des;//把指针移到末尾while (*des)des++;printf("*des is %c\n", *des);while ((*des++ = *src++) != '\0');return result;}int main(){char des[30] = "chenyu";const char *src = "hello";printf("des is %s and my_strcat result  is %s\n",des, my_strcat(des, src));return 0;}

结果:

*des is des is chenyuhello and my_strcat result  is chenyuhello






3、实现strstr函数

#include <stdio.h>#include <string.h>//简单实现strstr函数char *my_strstr(const char *des, const char *src){if (des == NULL || src == NULL)return des;const char *save_src = src;while (*des != '\0'){    const char *save_des = des;while (*save_des == *save_src && *save_des != '\0' && *save_src != '\0'){save_des++;save_src++;}//满足条件的时候记得返回des,而不是save_des,因为这个时候,save_des指针已经跑到后面去了if (*save_src == '\0')return des;//不匹配再次赋值src给save_src        save_src = src;//指针向右移动,不然会死循环++des;}return NULL;}int main(){const char *des = "chenyuhello";const char *src_one = "wc";const char *src_two = "he";printf("mystrstr result_one  is %s\n", my_strstr(des, src_one));printf("strstr result_one is %s\n", strstr(des, src_one));    printf("mystrstr result_two  is %s\n", my_strstr(des, src_two));printf("strstr result_two is%s\n", strstr(des, src_two));return 0;}

结果:

mystrstr result_one  is (null)strstr result_one is (null)mystrstr result_two  is henyuhellostrstr result_two ishenyuhello






阅读全文
0 0
原创粉丝点击