您当前的位置:首页 > 计算机 > 编程开发 > C语言

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

时间:12-30来源:作者:点击数:

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[15];
} CUSTREC;
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 copy 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 copy one CUSTREC to another. \n") ;
    printf("I'll copy 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 copy 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));
    printf("Done! I just copied customer number # %d (%s %s)." ,dest_cust. id, dest_cust. first_name, dest_cust. last_name) ;
}

 

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门