我是靠谱客的博主 秀丽大白,最近开发中收集的这篇文章主要介绍strchr_strcpy_strcat的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

strchr()函数的实现:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char * mystrchr(const char * pdest, char ch)
{
char *p = NULL;
if (pdest == NULL)
{
return NULL;
}
while (*pdest != '')
{
if (ch == *pdest)
{
p = pdest;
return
p;
}
pdest++;
}
return p;
}
void main()
{
char ch = 'a';
char str[100] = "task";
//char *p = strchr(str, ch);
char *p = mystrchr(str, ch);
if (p == NULL)
printf("没有找到相应的字符。n");
else
{
printf("找到字符 %c, %sn", *p, p);
}
system("pause");
}

strcpy()、strcat()的实现,注意参数的 传递变化:

#include<stdio.h>
#include<stdlib.h>
/* 使用递归完成,这儿有个问题是每次递归时传值时 pdest 都有变化
*/
void mystrcpy(char *pdest, char *psour)
{
if (*psour == '')
{
return;
}
else
{
*pdest = *psour;
//mystrcpy(pdest++, psour++); 注意这二个的写法,因为有优先级的问题,所以会导致程序出错。
mystrcpy(++pdest, ++psour);
}
}
/* 副本机制,改变一个变量需要,该变量的地址、改变一个指针需要一个二级指针 */
void newmystrcpynull(char **pdest, char *psour)
{
*pdest = malloc(100);
char *npdest = *pdest;
while ((*npdest++) = (*psour))
{
}
}
/* 使用递归完成 */
void mystrcat(char *pdest, char *psour)
{
if (*psour == '')
{
/*pdest++;
*pdest = '';*/
return;
}
else
{
//int length = sizeof(*pdest);
while (*pdest != '')
pdest++;
*pdest = *psour;
mystrcat(++pdest, ++psour);
}
}
char * mystrcat(char *dest, const char *psour)
{
char *pstart = dest;
while (*pstart != '')
{
pstart++;
}
//从尾部
while ((*pstart++) = (*psour))
{
}
}
void main()
{
//char str[100] = { 0 };
/* 如果换成下面的指针方式 看 void newmystrcatnull(char **pdest, char *psour) 的参数传递 */
char *str = NULL;
char str1[20] = "task";
char str2[10] = "list";
//strcpy(str1, str2);
//strcat(str1, str2);
//mystrcpy(str1, str2);
//printf("%sn", str1);
newmystrcpynull(str, str2);
printf("%sn", str);
//system(str1);
system("pause");
}




最后

以上就是秀丽大白为你收集整理的strchr_strcpy_strcat的实现的全部内容,希望文章能够帮你解决strchr_strcpy_strcat的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部