strchr_strcpy_strcat的实现

转载 2016年05月30日 13:59:51

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");
}




模拟实现C库函数strcpy,strcat,strstr,strchr,strcmp,memcpy,memmove

1、模拟实现strcpy char *my_strcpy( char *dest, const char *str) { assert(dest != NULL); assert(str != N...

自主编程实现strlen,strcpy,strcmp,strcnpy,strcat,strstr,strchr库函数

为了对strlen,strcpy,strcmp,strcnpy,strcat,strstr,strchr这几个库函数有深刻的理解和认识,所以自己就编写了一些程序函数来实现这些库函数的功能,下面是具体的...

模拟实现函数库中的各种常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove

————– 1模拟实现strcpy—————strcpy函数是将源字符串复制到目标字符串的函数strcpy函数的思路就是,它是一个字符串,有\0作为结束标志,那么可以用\0作为突破点和条件,具体代码如...

strcpy,strcat,strcmp,strlen,strchr

  • 2011年06月18日 15:22
  • 26KB
  • 下载

(C语言)自己写字符串操作函数(一)——strlen/strcpy/strcat/strcmp/strchr/strpbrk/strstr等相关函数

看到很多面试都会要求你写一些简单的字符串操作函数,这些函数看起来挺简单的,但是自己写的时候就会发现不少的问题。所以我自己把大部分的字符串操作函数都写了一遍,然后用了个测试程序来测试自己写的函数与库函数...

strlen,strcpy,strcat,strstr,strcmp,strchr函数的使用和注意事项

strcpy源码: char *strcpy(char *strDes, const char *strSrc) { assert((strDes != NULL) && (str...

部分字符串库函数的重写(源码) toupper,memcpy,memmove,memset,memchr,strlen,strcpy,strcat,strcmp,strchr

#include #include #include //////////////////////////////////////////////////// //Convert cha...

c函数strcpy() ,strcat(),strcmp(), strlen(), strchr() ,strstr() 使用整理

1.strcpy() 功能:      字符串复制 头文件:   string.h 返回值类型:   char* C语言标准库函数strcpy,把从src地址开始且含有'\0'结...
  • bitlxlx
  • bitlxlx
  • 2016年07月26日 10:33
  • 996

c 字符串、字符和字节 strlen、strcpy、strcat、strcmp、strchr、strstr

1、strlen  字符串长度 #include #include main() { char *message = "hello liaojianguo"; printf(...

memcpy,memmove,strcpy,strcat等系列函数的实现(二)

、strcat函数:  1、定义函数: extern char *strcat(char *dest,char *src); 把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0'...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:strchr_strcpy_strcat的实现
举报原因:
原因补充:

(最多只允许输入30个字)