C语言编程:用自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和
发布网友
发布时间:2022-05-15 06:41
我来回答
共4个回答
热心网友
时间:2023-10-12 04:09
strcat(char
*p1,char
*p2,char
*p)
{
while(*p1)
//检查指针是否到了'\0'
{
*p=*p1;
//赋值
p1++;
//指针指向下一个字符
p++;
}
while(*p2)
{
*p=*p2;
p2++;
p++;
}
*p='\0';
//为str3结尾加上'\0'
}
这个是strcat是3个形参的,两个形参的是这样写的
void
strcat(char
*p1,
char
*p2)
{
while(*p1)
{
p1++;
}
while(*p2)
{
*p1
=
*p2;
p1++;
p2++;
}
*p1
=
'\0';
}
注意
p1开的数组要比p2大哦
int
strlen(char
*p1)
{
char
*s=p1;
//将指针s指向指针p,即指向str1
while(*s)
//当*s不为'\0'的时候
s++;
//指针指向下一个字符
return
(s-p1);
//当s指向字符串的'\0'的前一位,而p指向的是开头,所以s-p就是长度
}
strcpy(char
*p1,
char
*p2)
{
while(*p2)
{
*p1
=
*p2;
p1++;
p2++;
}
}
strcmp(char
*p1,
char
*p2)
{
//当*p1,*p2不为空,且*p1
==
*p2,循环执行
while(*p1
&&
*p2
&&
(*p1
==
*p2))
{
//指向下一个元素
p1++;
p2++;
}
if(*p1>
*p2)
return
1;
else
if(*p1<
*p2)
return
-1;
return
0;
}
热心网友
时间:2023-10-12 04:09
char *mystrcat(char *dst, char *src)
{
char *p = dst;
while(*p)++p;
while(*p++ = *src++);
return dst;
}
char *mystrcpy(char *dst, char *src)
{
while(*dst++ = *src++);
return dst;
}
int mystrcmp(char *dst, char *src)
{
while(*dst && *dst == *src)
{
++dst;
++src;
}
return *dst - *src;
}
int mystrlen(char *dst)
{
char *p = dst;
while(*p)++p;
return p - dst;
}
int main()
{
char s[32], t[32] = "HELLO,CHINA";
mystrcpy(s, "HELLO,");
puts(s);
mystrcat(s, "USA");
puts(s);
printf("%d %d\n", mystrlen(s), mystrcmp(s, t));
}
热心网友
时间:2023-10-12 04:09
char* strcat( char s1[], const char s2[] )
{
if (s1==NULL || s2==NULL)
return NULL;
for(char* p=s1+sizeof(s1)-1; *s2!='\0'; p++,s2++)
*p = *s2;
return s1;
}
热心网友
时间:2023-10-12 04:10
void strcat(char s1[],char s2[])
{int i,j;
for(i=0;s1[i]!='\0';i++);
for(j=0;s2[j]!='\0';j++)
s1[i++]=s2[j];
s1[i]='\0';
}
void strcpy(char a[],char b[])
{
int i=0,j=0;
while((a[i++]=b[j++])!='\0');}
int strcmp(char s1[],char s2[])
{int i;
for(i=0;s1[i]!='\0'&&s2[i]!='\0';i++)
{
if(s1[i]>s2[i])
return 1;
else if(s1[i]<s2[i])
return -1;}
if(s1[i]=='\0'&&s2[i]=='\0')
return 0;
else if(s1[i]=='\0')
return -1;
else
return 1;
}
int strlen(char s[])
{
int len=0 ,i;
for(i=0;s[i]!='\0';i++)
len++;
return len;}