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;

参考资料:

百度百科-字符串

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-06

可以利用字符指针结合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
}

第2个回答  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);//打印字符串
}
第3个回答  2013-07-06
#include "stdio.h"
#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;
}
第4个回答  2013-10-26
void strcpy(char *des, const char *sour){ des = (char*)malloc(strlen(sour)+1); while(*sour != '\0') { *des = *sour; des++; sour++; } *des = '\0';}}

C语言中如何编写一个字符串复制函数,并在主函数中调用它。
可以利用字符指针结合while循环的方式来编写字符串复制函数。具体实现方法可以参考如下程序:include<stdio.h>void str_copy(char *str1, char *str2) \/\/ 字符串复制函数{ while(*str1++ = *str2++); \/\/ 将字符串str2中的每个字符逐个复制到str1中,直到遇到字符串结束字符'\\0'}void ma...

C语言:编写一个函数,实现把一字符串复制到一个字符数组中。
void main(){char str1[20];str2[20];scanf("%s%s",str1,str2);printf("%s",strcopy(str1,str2));}

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
strlen(string )---字符串长度

C语言编写函数:字符串的复制
t='\\0';\/\/把超过长度n的都变成结束符'\\0'} return t;}

c语言 写一个函数能将两个字符串连接,在主函数中调用
void stringcat(char str1[],char str2[],char str[]){ int i,j;for(i=0;str1[i]!='\\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\\0';j++)str[i+j]=str2[j];str[i+j]='\\0';} void main(){ char s1[]="this is a test",s2[]=", test is a good thing...

C语言,使用函数实现字符串复制
\/*把从src地址开始的字符串复制到以dest开始的字符串中*\/ char strcopy (char dest,char src){ char r = dest;while((*r++ = src++)!='\\0');return dest;} int main (){ char str1="abcde";char str2;str2 = strcopy (str2,str1);\/*把str1复制到str2*\/ puts (str2);return...

...一个程序,将字符串的第m个字符开始的全部字符复制成另一个字符串
直接在main函数中调用就行了,C++和C都能编译.ch为要复制的字符串,m为要复制的第几个字符,注意是第几个字符,不是下标如果是按下标的话,把int n=m-1;改为n=m;ch2为被复制到的目标字符串.注意ch2一定要足够大. slatop | 发布于2012-01-08 举报| 评论 3 1 #include<stdio.h>#include<string.h>...

c语言存字符串到一个函数,然后用主函数输出,可以不用指针嘛,各位大佬救 ...
可以使用C语言中的数组来存储字符串,并通过函数来操作这个数组,最后在主函数中输出这个数组,无需使用指针。例如,下面的代码演示了如何在函数中存储字符串,并在主函数中输出这个字符串:这个程序中,store_string 函数接受一个 char 数组 str 作为参数,并使用 strcpy 函数将字符串 "Hello, world!" ...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
void reverse(char st[]);\/\/定义反序函数 int main(){ char s[20];input(s);\/\/调用输入函数 printf("Original string: %s\\n", s);\/\/输出原字符串 reverse(s);\/\/调用反序函数 printf("New string: %s\\n", s);\/\/输出反序后的字符串 return 0;} void input(char st[]){ printf(...

C语言编程,写一个函数,使输入的一个字符串按反序存放,在主函数中输入和...
子函数中的数组a和main函数中的数组a, 并不是同一个数组 include <stdio.h>#include <stdlib.h>#define N 10void fanzhuan(char* a);int main() {int i;char a[N]={'\\0'};printf("请输入字符串:");scanf("%s",a);fanzhuan(a);return 0;}void fanzhuan(char* a){int i;for(...

相似回答