2

次のプログラムは目的のデータを出力しません (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すると、すべてがうまくいきます! ここで問題はどこですか?

4

6 に答える 6

12

memcpy は、オブジェクトの数ではなく、コピーするバイト数を必要とします。

 memcpy(dest,src,5*sizeof(dest[0]))
于 2010-09-16T19:14:18.363 に答える
3

memcpyバイトのみをコピーします。次のように、オブジェクトの数に各オブジェクトのサイズを掛けて、コピーするバイト数を指定する必要があります。

memcpy(dest, src, 5 * sizeof(int));
于 2010-09-16T19:15:15.457 に答える
1

試すmemcpy(dest,scr,sizeof(int)*5)

于 2010-09-16T19:14:59.587 に答える
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;
}
于 2010-09-16T19:15:19.187 に答える
1

sizeof( x )「x」がオブジェクトを表す場所でmemcpy を呼び出したいとします。ここであなたがするだろう

memcpy( dest, src, 5*sizeof(int) );
于 2010-09-16T19:15:35.223 に答える
0

ベターは

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

array-type を他のタイプに変更する場合、コードを変更してはなりませ

于 2010-09-16T20:41:17.407 に答える