1、字符串的复制
思路:
方法一:使用库函数对字符串复制strcpy(字符数组1,字符串2)
作用是将字符串2复制到字符数组1中去
char str1[10],str2[]="China";
strcpy(str1,str2);
方法二:构造函数
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
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;
}