关闭

strchr_strcpy_strcat的实现

标签: strchstrrcpystrcat
108人阅读 评论(0) 收藏 举报
分类:

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 != '\0')
	{
		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, %s\n", *p, p);
	}
	


	system("pause");
}

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

#include<stdio.h>
#include<stdlib.h>

/* 使用递归完成,这儿有个问题是每次递归时传值时 pdest 都有变化  */
void mystrcpy(char *pdest, char *psour)
{
	if (*psour == '\0')
	{
		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 == '\0')
	{
		/*pdest++;
		*pdest = '\0';*/
		return;
	}
	else
	{
		//int length = sizeof(*pdest);
		while (*pdest != '\0')
			pdest++;
		*pdest = *psour;
		mystrcat(++pdest, ++psour);
	}

}

char * mystrcat(char *dest, const char *psour)
{
	char *pstart = dest;
	while (*pstart != '\0')
	{
		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("%s\n", str1);

	newmystrcpynull(str, str2);
	printf("%s\n", str);


	//system(str1);

	system("pause");
}




0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:41904次
    • 积分:906
    • 等级:
    • 排名:千里之外
    • 原创:24篇
    • 转载:175篇
    • 译文:0篇
    • 评论:5条
    最新评论