赞
踩
使用strcpy实现字符串的复制
现有字符串p1和字符串p2,要求:用字符串p1拷贝,并存到p2 中,并且覆盖p2原来的内容;
//复制之前:
p1[100]="abcdabcdabcd1111defghijabcd";
p2[100]="123456";
//复制之后:
p2="abcdabcdabcd1111defghijabcd"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//方法一.for循环实现:
int strcopy1(char*p1,char*p2)
{
int ret=0;
if( p1 == NULL || p2 == NULL)
{
ret=-1;
printf("func strcopy1 err:( p1 == NULL || p2 == NULL)",ret);
return ret;
}
for(;*p1!='\0';*p2++,*p1++)
{
*p2=*p1;
}
return ret;
}
//方法二.while循环实现:
int strcopy2(char* p1,char* p2)
{
int ret=0;
if( p1 == NULL || p2 == NULL)
{
ret=-1;
printf("func strcopy1 err:( p1 == NULL || p2 == NULL)",ret);
return ret;
}
while(*p1!='\0')
{
*p2++= *p1++;
/*p2=*p1;
*p1++;
p2++;*/
}
p2='\0';
}
//方法三:while循环最简易实现法
int strcopy3(char* p1,char* p2)
{
int ret=0;
if( p1 == NULL || p2 == NULL)//判断指针所指向的空间是否合法
{
ret=-1;//若不合法
printf("func strcopy1 err:( p1 == NULL || p2 == NULL)",ret);
return ret;//返回错误原因
}
while(( *p2++ = *p1++ )!='\0')//条件和循环体用一句话表示
{
;//若满足条件, 则执行空语句,循环继续
}
}
void main()
{
char p1[100]="abcdabcdabcd1111defghijabcd";
char p2[100]="123456";
printf("p1的值为:%s\n",p1);
printf("p2的值为:%s\n",&p2);
strcopy1(p1,p2);
printf("完成拷贝后,p2的值为%s\n",&p2);
system("pause");
}
当遇到字符串问题时,首先考虑库函数,若库函数中有需要的,则直接使用,若没有,则根据需要自行设置,并进行优化;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。