字符串的复制
void Mystrcpy1(char *des,char *src)
{
int i;
for(i = 0;*(src + i)!='\0';i++)
{
*(des + i) = *(src + i);
}
*(des + i) = '\0';
}
或者
void Mystrcpy2(char *des,char *src)
{
while(*des ++ = *src ++);
}
int main()
{
char str1[] = "abcde";
char str2[10];
Mystrcpy2(str2,str1);
printf("str2 = %s\n",str2);
return 0;
}
字符串的连接:
“abcde”,"xyz"——>"abcdexyz"
char *Mystrcat(char *des,char *src)
{
assert(des != NULL&& src != NULL);//断言assert(限制条件) 报告错误
char *p = des;
while( *des != '\0')//找到des最后一个字符
{
des ++;
}
while(*des++ = *src++);//将src中的字符复制到des中
return p;
}
int main()
{
char str1[10] = "abcde";
char str2[] = "xyz";
Mystrcat(str1,str2);
printf("%s\n",str1);
return 0;
}
在主函数中定义str时一定要定义成字符数组而不能定义成字符串常量,否则程序容易崩溃
字符的比较:
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("abcd","x"));
printf("%d\n",Mystrcmp("ab","abx"));
printf("%d\n",Mystrcmp("x","abx"));
printf("%d\n",Mystrcmp("abcd","abcd"));
return 0;
}