c语言实现字符串拷贝函数的几种方法

首先是使用库函数
比如下面代码

void ourStrCopy(char S1[] , char S2[]){ strcpy(S1, S2); //该函数还有另一个版本可以按长度截取 }

还有一个函数是memcpy,这个是内存拷贝,原型是

void memcpy(void *dest, const void *src, size_t n); 需要注意的是这个函数第一个和第二个指针都是void型且第二个指针不能被修改,第三个参数是需要拷贝的内存长度按字节记。

然后是用指针引用,注意这个并非赋值,而是引用,这种操作需要注意内存。

char s1[] = "abcdefg";//定义一组字符串char *s2 = s1;//按照指针拷贝字符串

第三种方法就是直接赋值了

void outStrCopy(char s1[] , char s2[]){ int len1 = strlen(s1);//获取第一个字符串的长度 int len2 = strlen(s2);//获取第二个字符串的长度 int len = 0; //字符串总长度 if(len1 <= len2){ len = len2; //选择COPY的长度 }else{ len = len1; } for(int i = 0 ; i < len ; i++){ s1[i] = s2[i]; //实现数据拷贝 }}

❷ 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 ",ptr,to);

return 0;

}

char *custom_cpy(char *to,char *from){

if(to == NULL || from == NULL){

return NULL;

}

char *p = to;

for(;*from!='';from++,to++){

*to = *from;

}

*to = '';//拷贝完毕之后一定要加一个结束符号

return p;

}

(2)c语言拷贝函数扩展阅读:

字符串相关函数应用:

1. 连接运算 concat(s1,s2,s3…sn) 相当于s1+s2+s3+…+sn。

例:concat(‘11’,'aa’)='11aa’;

2. 求子串。 Copy(s,I,I) 从字符串s中截取第I个字符开始后的长度为l的子串。

例:(‘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;

网络-字符串

❸ 用C语言实现字符串拷贝函数有几种方式

1 用库函数
比如 用strcpy
strncpy
memcpy
sprintf
这些都可以实现

2 用自定义函数。
自己写
方法多种多样
算法少说也有几十种 实现出来 加上变种,几百种都不多。

❹ 编写C语言的字符串拷贝函数

整体使用示例如下:

其中char * str( char *strDest, const char *strSrc )即str实现方法,并在main函数中进行了测试!

❺ 用c语言写一个字符串拷贝函数

*q='\0';
return
*q;
所以函数返回的是‘\0’。然后主函数里面你的printf打印输出的是函数的返回值而不是num这个数组,你把%s后面的参数改成num就行了。

❻ c语言中如何像用函数strcpy复制字符串一样复制数字,如复制30。

||

写一个函数即可。比如,可以写如下的一个函数:

intintncpy(int*des,int*src,intlen)
{
inti;
if(des==NULL||src==NULL||len<=0)
return-1;
for(i=0;i<len;i++)
{
*des++=*src++;
}
return0;
}

说明:

  1. 为了适合大多数情版况,不方便像strcpy()一样权,用“”自动判别字符串结尾。因此用类似于strncpy()定长度的方式,进行数字拷贝。

  2. 其它数字类型,比如float, double, 都可以按照类似的方式,编制对应的ncpy()程序。

可以继续交流,谢谢。

❼ c语言strcpy()用法

1、strcpy函数是复制字符串的,接受两个参数,一个是被复制字符串,另一个新字符串。具体的用法,首先打开编辑器新建一个c语言的程序文件,写入头文件和主函数:

❽ 自定义c语言字符串拷贝函数strcpy

char* mystr(char *dest,const char *src)
{
int lens=0,i,j;
while(src[j]!='\0')
{
lens++;
j++;
}
for(i=0;i<=lens;i++)
dest[i]=src[i];
return dest;
}
我不知道参数加
const这个对不对我说下程序中的错误。
j没有初始化就使用,错误
你怎么知道dest的长度就比src大了,是不是也要计算下dest的长度,然后条件写i<=len1&&i<=len2

❾ C语言串拷贝(strcpy)和内存拷贝(memcpy)函数有什么不同

strcpy()函数只能拷贝字符串。strcpy()函数将源字符串的每个字节拷贝到目录字符串中,当遇到字符串末尾的null字符(\0)时,它会删去该字符,并结束拷贝。 memcpy()函数可以拷贝任意类型的数据。因为并不是所有的数据都以null字符结束,所以你要为memcpy()函数指定要拷贝的字节数。 在拷贝字符串时,通常都使用strcpy()函数;在拷贝其它数据(例如结构)时,通常都使用memcpy()函数。以下是一个使用strcpy()函数和memcpy()函数的例子: #include <stdio. h> #include <string. h> typedef struct cust-str {int id ;char last_name [20] ; char first_name[l5];} CUSTREC;void main (void); void main (void){char * src_string = "This is the source string" ; char dest_string[50]; CUSTREC src_cust; CUSTREC dest_cust; printf("Hello! I'm going to src_string into dest_string!\n"); / * Copy src_ string into dest-string. Notice that the destination string is the first argument. Notice also that the strcpy() function returns a pointer to the destination string. * / printf("Done! dest_string is: %s\n" , strcpy(dest_string, src_string)) ; printf("Encore! Let's one CUSTREC to another. \n") ; prinft("I'll src_cust into dest_cust. \n"); / * First, intialize the src_cust data members. * / src_cust. id = 1 ; strcpy(src_cust. last_name, "Strahan"); strcpy(src_cust. first_name, "Troy"); / * Now, Use the memcpy() function to the src-cust structure to the dest_cust structure. Notice that, just as with strcpy(), the destination comes first. * / memcpy(&dest_cust, &src_cust, sizeof(CUSTREC));