字符串相关操作
一、字符串复制
定义函数Mystrcpy,并且定义两个字符数组的变量,目标字符串des,源字符串src
将源字符串赋值给定义的目标字符串,完成字符串的复制。
#include <stdio.h>
#include <string.h>
void Mystrcpy(char des[],char src[])
{
int i;
for(i=0;i<src[i]!='\0';i++)
{
des[i]=src[i];
}
des[i]='\0';
}
int main()
{
char arr[]="abcd";
char brr[10]="xyz";
char crr[10];
Mystrcpy(crr,brr);
printf("%s\n",crr);
return 0;
}
运行结果如图
二、字符串的长度
定义关于字符串长度的函数Mystrlen,从主函数中输入字符串,输出字符串的函数
#include <stdio.h>
#include <string.h>
int Mystrlen(char str[])
{
int i;
for(i=0;str[i]!='\0';i++)
{
;
}
return i;
}
int main()
{
char str1[]="abcd";
printf("%d\n",Mystrlen(str1));
return 0;
}
运行结果如图
三、字符串的链接
返回目标字符串的首地址,des+=src,“abc”,“xyz”—>“abcxyz”
#include <stdio.h>
#include <string.h>
#include <assert.h>
char *Mystrcat(char *des,const char *src)
{
assert(des!=NULL&&src!=NULL);
if(des==NULL||src==NULL)
return NULL;
char *p= des;
while(*des!='\0')
des++;
while(*des++=*src++);
return des;
}
int main()
{
char str1[100]="abc";
char str2[100]="xyz";
char *p=Mystrcat(str1,str2);
printf("%s\n",str1);
printf("%s\n",p);
return 0;
}
运行结果如图
四、字符串大小比较
如果第一个大返回大于0的数字,相等返回0,第一个小返回小于0的数字
如"abc"<“x”,“abcd”>“abc”,“abc”=“abc”
#include <stdio.h>
#include <string.h>
#include <assert.h>
int Mystrcmp(const char *str1,const char *str2)
{
assert( str1!=NULL && str2!=NULL);
if( str1==NULL || str2==NULL)
{
return 0;
}
int tmp;//保存当前两个字符的差值
while((tmp=*str1-*str2)==0 && *str1!='\0')
{
str1++;
str2++;
}
return tmp;
}
int main()
{
//char str1[]="abcd";
//char str2[]="abc";
printf("%d\n",Mystrcmp("abcd","abc"));
return 0;
}
运行结果如图