memcpy ist ein Puffer und ein array funktioniert nicht

Habe ich eine Anforderung, die in der ich übergeben zu müssen, ein leeres array als parameter an eine Funktion. Und in dieser Funktion aufgerufen, ich sollte memcpy einige Daten in den übergebenen array. Also ich habe geschrieben ein kleines Beispiel, ist die gleiche wie meine Anforderung. Unten ist seine code:

#include <stdio.h>
#include <stdlib.h>
void printArr(int *a)
{
    int i;
    int *b=(int*)malloc(sizeof(int)*10);
    printf("\n\nEnter 10 lements:\n");
    for(i=0;i<10;i++)
        scanf("%d",&b[i]);

    printf("\nContents of array b:\n");
    for(i=0;i<10;i++)
        printf("%d\t",b[i]);
    printf("\n");
    memcpy(a,b,10);
    printf("\nContents of array a:\n");
    for(i=0;i<10;i++)
        printf("%d\t",a[i]);
    printf("\n");
}
int main()
{
    int a[10];
    printArr(a);
    return 0;
}

In dem oben genannten Beispiel, ich sende ein array aus der main-Funktion, um die printArr Funktion. Jetzt in der aufgerufenen Funktion werden die Daten memcpy in das array. Wenn die array-Inhalte gedruckt werden, die ich einige junk-Werte. Auch die Zusammenstellung gibt eine Warnmeldung, wie unten dargestellt:

$ gcc -o arr array.c
array.c: In function printArr’:
array.c:15:2: warning: incompatible implicit declaration of built-in function memcpy

Die Ausgabe des obigen Programms ist, wie unten gezeigt:

Enter 10 lements:
0 1 2 3 4 5 6 7 8 9

Contents of array b:
0   1   2   3   4   5   6   7   8   9   

Contents of array a:
0   1   134479874   11136160    11136160    11132916    134514160   134513696   134514171   11132916    

Kann mir bitte jemand sagen, was falsch ist in dem oben genannten Programm.

Hinweis: ich brauche zum kopieren von Daten aus dem Puffer auf den übergebenen array nur mit memcpy und nicht über eine for-Schleife aufgrund von performance-Gründen in meinem eigentlichen Programm.

Vielen Dank im Voraus.

InformationsquelleAutor Zax | 2013-04-03

Schreibe einen Kommentar