字符串的复制,比较大小,拼接

1、字符串的复制

思路:

字符串的复制,比较大小,拼接_第1张图片

方法一:使用库函数对字符串复制strcpy(字符数组1,字符串2)

              作用是将字符串2复制到字符数组1中去

char str1[10],str2[]="China";
strcpy(str1,str2);

方法二:构造函数

代码如下:

#include 
#include 
#include 
void Mystrcpy1(char *desstr,char *srcstr)
{//把desstr和srcstr当作数组看待
	int i;
	for(i=0;srcstr[i]!='\0';i++)
	{
		desstr[i] = srcstr[i];
	}
	desstr[i] = '\0';
}

void Mystrcpy2(char *des,char *src)
{
	int i;
	for(i=0;*(src+i)!='\0';i++)
	{
		*(des+i) = *(src+i);
	}
	*(des+i) = '\0';
}

void Mystrcpy3(char *des,char *src)
{
	while(*src != '\0')
	{
		*des = *src;
		des++;
		src++;
	}
	*des = '\0';
}

void Mystrcpy4(char *des,char *src)
{
	while(*src != '\0')
	{
		*des++ = *src++;
	}
	*des = '\0';
}

void Mystrcpy5(char *des,char *src)
{
	while(*des++ = *src++) ;
}
int main()
{
	char str1[] = "abcde";
	char str2[10];
	char str3[] = "xyz";
	Mystrcpy5(str2,str1);
	printf("str2=%s\n",str2);
return 0;
}

 2,字符串比较大小

方法一:库函数strcmp(字符串1,字符串2)

        字符串比较规则:将两个字符串自左至右逐个字符相比(按ASCII码值大小比较),直到出现不同字符或遇到'\0'为止。

方法二:构造函数

代码如下:

int Mystrcmp(const char *str1,const char *str2)
{
	assert(str1!=NULL && str2!=NULL);
	int gap;
	while(((gap=*str1-*str2)==0) && (*str1!='\0'))
	{
		str1++;
		str2++;
	}
	return gap;
}

int main()
{
	printf("%d\n",Mystrcmp("abcd","abx"));
	printf("%d\n",Mystrcmp("abzd","abx"));
	printf("%d\n",Mystrcmp("x","abx"));
	printf("%d\n",Mystrcmp("abcd","abcd"));

	return 0;
}

3,字符串拼接

方法一:库函数strcat(字符数组1,字符数组2)

注意:字符数组1足够大,以便容纳连接后的新字符串。

方法二:构造函数

代码如下:

char *Mystrcat(char *des,const char *src)
{
	assert(des!=NULL && src!=NULL);
	char *p = des;

	while(*des!='\0')//找尾巴
	{
		des++;
	}
	while(*des++ = *src++);//复制

	return p;
}

你可能感兴趣的:(经典题目,C语言)