用C语言程序,通过自定义函数实现字符串处理函数strcat、 strcpy、strcmp、strlen和的功能
3个回答
展开全部
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;
}
{
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;
}
展开全部
0.0+【我自己做的
【strlen
{ char ch1[10]="abc";
int i;
for(i=0;ch1[i]!='\0';i++);//循环到不是\0为假(结尾)
printf("len=%d",i);//循环次数就是字符串的长度
getch();
}
【strcpy
{ char ch1[20]="abcde",ch2[20];
int i;
for(i=0;ch1[i]!='\0';i++)
ch2[i]=ch1[i];//用ch2替换掉ch1的每一位
ch2[i]='\0';//在最后一位后面加上结束标志
printf("%s",ch2);//%s表示输出字符串
getch();
}
【strcat
{ char ch1[20]="abc",ch2[20]="def";
int i,j;
for(i=0;ch1[i];i++);
for(j=0;ch2[j];j++)
ch1[i+j]=ch2[j];//把ch2加在ch1的后面
ch1[i+j]='\0'; //在最后一位后面加上结束标志
printf("%s",ch1);
getch();
}
↑过程:abcd→abcde→abcdef
【strcmp
{ charch1[20]="abc",ch2[20]="acd";
int i;
for(i=0;ch1[i]==ch2[i];i++)//比较到不同的那位
if(ch1[19]=ch2[19])//如果全相同,则相等
printf("ch1=ch2");
if(ch1[i]>ch2[i])//不同的那位比大小
printf("ch1>ch2");
else if(ch1[i]<ch2[i])
printf("ch1<ch2");
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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));
}
{
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));
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询