#include <stdio.h>
#include <string.h>
#include <assert.h>
char Mystrcat(char *des,const char *src)//字符串的链接
{
char *p = des;
while(*des != '\0')//找尾巴
{
des++;
}
while(*des++ = *src++);//复制
return *p;
}
char Mystrncat(char *des,const char *src,size_t n)//n个字符串的链接
{
assert(*src != NULL && *des != NULL);
char *p = des;
while(*des != '\0')
{
des++;
}
size_t i;
for(i = 0;i < n&&src[i]!='\0';i++)
{
des[i] = src[i];
}
des[i] = '\0';
return *p;
}
int Mystrcpy(char *des,const char *src)//字符的复制
{
char *p = des;
/* while(*src != '\0')
{
*des++ = *src++;
}
*des = '\0'; */
while(*des++ = *src++); //与上面等同
return *p;
}
void Mystrncpy(char *des,const char *src,size_t n)//n个字符的复制
{
size_t i;
for(i = 0;i < n && src[i]!='\0';i++)
{
des[i] = src[i];
}
if(i > n)
{
des[i++] = '\0';
}
des[i] = '\0';
}
int Mystrcmp(const char *str1,const char *str2)//字符大小的比较
{
assert(*str1 != NULL && *str2 != NULL);
while(*str1 == *str2 )
{
*str1++;
*str2++;
}
if(*str1>*str2)
{
return 1;
}
if(*str1<*str2)
{
return -1;
}
}
int Mystrncmp(const char *str1,const char *str2,size_t n)//n个字符的比较
{
assert(*str1 != NULL && *str2 != NULL);
while((*str1 == *str2) && (n--))
{
*str1++;
*str2++;
}
if(*str1>*str2)
{
return 1;
}
if(*str1<*str2)
{
return -1;
}
}
int main()
{
char str1[100] = "abc";
Mystrcat(str1,"def");
printf("%s\n",str1);
char str2[100] = "abc";
Mystrncat(str2,"def",2);
printf("%s\n",str2);
char str3[100];
char str4[100] = "abc";
Mystrcpy(str3,str4);
printf("%s\n",str3);
char str5[100];
char str6[] = "abcde";
Mystrncpy(str5,str6,3);
printf("%s\n",str5);
char str7[] = "abb";
char str8[] = "abc";
printf("%d\n",Mystrcmp(str7,str8));
char str9[] = "abcd";
char str10[] = "abcc";
size_t n = 4;
printf("%d\n",Mystrncmp(str9,str10,n));
return 0;
}
【C语言】实现strcat,strncat,strcpy,strncpy,strcmp,strncmp函数
最新推荐文章于 2024-09-13 09:48:06 发布