memcpy中使用非char数据作为参数的问题!

时间:2010-09-16 19:13:14

标签: c memcpy

以下程序不输出所需数据(在VC2008编译器上)

#include <stdio.h>
#include <string.h>

int main(void)
{
    int i;
    int dest[10] = {1};
    int src [] = {2, 3, 4, 5, 6};

    memcpy(dest, src, 5);
    for (i=0; i<10; i++) printf("%i\n", dest[i]);

    return 0;
}

而使用char数组代替,每件事情都很好! 这里的问题在哪里?

6 个答案:

答案 0 :(得分:12)

memcpy需要复制多个字节 - 而不是许多对象。

 memcpy(dest,src,5*sizeof(dest[0]))

答案 1 :(得分:3)

memcpy仅复制字节。您需要通过将对象数乘以每个对象的大小来告诉它要复制多少字节,如下所示:

memcpy(dest, src, 5 * sizeof(int));

答案 2 :(得分:1)

尝试memcpy(dest,scr,sizeof(int)*5)

答案 3 :(得分:1)

您需要添加sizeof(int)

#include <stdio.h>
#include <string.h>

int main(void)
{
    int i;
    int dest[10] = {1};
    int src [] = {2, 3, 4, 5, 6};

    memcpy(dest, src, sizeof(int) * 5);
    for (i=0; i<10; i++) printf("%i\n", dest[i]);

    return 0;
}

答案 4 :(得分:1)

您想使用sizeof( x )调用memcpy,其中“x”代表对象。在这里你做

memcpy( dest, src, 5*sizeof(int) );

答案 5 :(得分:0)

更好的是

memcpy( dest, src, 5*sizeof*src) );

如果您将array-type更改为其他类型,则代码必须更改。