C和指针之字符串简单实现 strcpy、strcat、strstr函数
2017-11-22 22:28
351 查看
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 henyuhello
strstr result_two ishenyuhello
相关文章推荐
- strcat,strcpy,strcmp,strlen4个常用字符串处理函数的数组与指针简单实现方法~
- 模拟实现字符串操作函数(strcpy,strstr,strcat,strcmp,strlen)与内存操作函数(memcpy,memmove)
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 使用strcpy和strcat实现字符串的连接
- 练习 5-3 用指针实现函数strcat(s,t)将t指向的字符串复制到s指向的字符串的尾部。
- 字符串处理函数strlen、strcpy、strcat、strcmp和convert的C语言实现
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... ) .
- c语言学习笔记(字符串函数strcmp,strcat,strcpy,strlen的简单实现)
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )
- 自定义实现字符串处理函数 strlen strcmp strcpy strncpy strcat strncat strchr strstr
- strcat strcpy strcmp strlen 的j简单实现
- 和字符串有关的函数的模拟实现 strlen strcpy strcat strstr strcmp
- strcat、strcpy、strcmp、strlen简单实现
- 编C语言程序:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和strlwr的功能
- 指针实现简单的字符串复制
- C语言字符串常见操作-strcpy、strlen、strcat和strcmp实现
- 字符串处理函数的模拟实现(strlen、strstr、strcat、strcmp、strcpy、memmove、memcpy)
- 读书笔记:自定义函数实现字符串处理函数----strlen、strcmp、strcat、strcpy
- 纯C 字符串操作函数 实现 (strcpy, strncpy, memcpy, memset, strcat, strlen ... )