Ich muss das Array verschieben und ein neues Element an der angegebenen Position mit memcpy
einfügen.verschieben Sie ein Array und fügen Sie ein neues Element an einer bestimmten Position mit memcpy
Input: 2, 5, 7, 0, 0, 0
Expected output: 2, 3, 5, 7, 0, 0
Actual output: 2, 3, 5, 0, 0, 0
Gibt es einen Fehler in meinem memcpy
? (Ich habe Arrays zu verwenden - nicht std::vectors
)
#include <stdio.h>
int main()
{
int i=0;
int len=0;
int a[6] = {'\0'};
a[0]= 2;
a[1] = 5;
a[2]= 7;
len=3;
int b=0;
b = 2;
memcpy(a+2, a+1, b * sizeof(int));
//memcpy(a+2, a+1, sizeof(int) * (len-1));
a[1]=3;
for(i=0;i<6;i++)
printf("after %d \n", a[i]);
}
Vielleicht brauchen Sie bei Verwendung zu suchen: 'memmove' anstatt' Memcpy '? – GWW
Die Operation von memcpy, wenn sich die Regionen überlappen, ist nicht definiert. – stark
Vielleicht sollten Sie 'std :: copy' anstatt 'memcpy' oder' memmove' betrachten? –