C语言中如何编写一个字符串复制函数,并在主函数中调用它。
#include<stdio.h>
char *custom_cpy(char *to,char *from);
int main(int argc,char *argv[]){
char *from = "i like c langanger";
char to[30];
char *ptr = custom_cpy(to,from);
printf("%s,%s\n",ptr,to);
return 0;
}
char *custom_cpy(char *to,char *from){
if(to == NULL || from == NULL){
return NULL;
}
char *p = to;
for(;*from!='\0';from++,to++){
*to = *from;
}
*to = '\0';//拷贝完毕之后一定要加一个结束符号
return p;
}
扩展资料:
字符串相关函数应用:
1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。
例:concat(‘11’,'aa’)='11aa’;
2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。
例:copy(‘abdag’,2,3)=’bda’;
3. 删除子串。过程 Delete(s,I,l) 从字符串s中删除第I个字符开始后的长度为l的子串。
例:s:=’abcde’;delete(s,2,3);结果s:=’ae’;
4. 插入子串。 过程Insert(s1,s2,I) 把s1插入到s2的第I个位置
例:s:=abc;insert(‘12’,s,2);结果s:=’a12bc’;
5. 求字符串长度 length(s) 例:length(‘12abc’)=5;
参考资料:
可以利用字符指针结合while循环的方式来编写字符串复制函数。
具体实现方法可以参考如下程序:
#include<stdio.h>
void str_copy(char *str1, char *str2) // 字符串复制函数
{
while(*str1++ = *str2++); // 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\0'
}
void main()
{
char s1[] = "abcd";
char s2[5];
str_copy(s2, s1); // 将字符串s1复制到s2中
printf("%s", s2); // 输出字符串s2,输出结果为abcd
}
2013-10-26
#include "stdio.h"
char string(char a[],char b[]) //定义复制的字符串
{
int i; //计数
for(i=0;a[i-1]!='\0';i++) //复制
{
b[i] = a[i];
}
}
int main (void)
{
char a[]="12345asfd"; //字符串
char b[100];
string(a,b); //把a的字符串复制到b
printf("%s\n",b);//打印字符串
}
2013-07-06
#include "stdlib.h"
int stringcopy(char *str1,char *str2);
main()
{
char str1[40],str2[20];
printf("输入第一个字符串");
scanf("%s",str1);
printf("输入第二个字符串");
scanf("%s",str2);
stringcopy(str1,str2);
getchar(); getchar();
return 0;
}
int stringcopy(char *str1,char *str2)
{
int i=0,j=0;
do
{
i++;
}while(*(str1+i)!='\0');
do
{
*(str1+i)=*(str2+j);
i++;j++;
}while(*(str2+j-1)!='\0'&&i<40);
if(i>=40)
printf("对不起,空间不够,不能复制!");
else
{
printf("%s\n",str1);
}
return 0;
}
2013-10-26