使用 memcpy 方法
Using memcpy method
我正在寻找如何编写类似 memcpy 的函数。将整数或字符从一个数组复制到另一个数组的方法。
我的意思是,它使用 memcpy,而不使用它。但在我的情况下它不起作用。
void Memcpy( void *from, void *to, int dimension, int length ) {
if(dimension == sizeof(char)){
char *copyFrom = (char *)from;
char *copyTo = (char *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
if(dimension == sizeof(int)){
int *copyFrom = (int *)from;
int *copyTo = (int *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
}
{感谢您的帮助=)}
void copyOfArray( void *from, void *to, int dimension, int length ) {
memcpy(to, from, dimension * length);
}
真正想要的,用memcpy
就可以实现,无需再造。为了您的方便,您可以用 copy_of_array
包装它,甚至用 copy2
包装 copy_of_array
(只要数组是静态分配的)。
#include <string.h>
#include <stdio.h>
#define copy2(src, dst, count, shift) copy_of_array(src, dst, count, sizeof(src[0]), shift)
copy_of_array (void * src,
void * dst,
int count,
int elem_size,
int shift)
{
memcpy (dst, (char*)src + elem_size * shift, count * elem_size);
}
int main() {
int i;
int ione[4] = { 1, 2, 3, 4};
int itwo[2] = { 0, 0 };
char cone[4] = { 'a', 'b', 'c', 'd'};
char ctwo[2] = { 'x', 'y' };
copy_of_array(ione, itwo, 1, sizeof(int), 3);
for (i=0; i<2; i++ )
printf("%d ", itwo[i] );
copy2(cone, ctwo, 1, 3);
for (i=0; i<2; i++ )
printf("%c ", ctwo[i] );
}
我正在寻找如何编写类似 memcpy 的函数。将整数或字符从一个数组复制到另一个数组的方法。 我的意思是,它使用 memcpy,而不使用它。但在我的情况下它不起作用。
void Memcpy( void *from, void *to, int dimension, int length ) {
if(dimension == sizeof(char)){
char *copyFrom = (char *)from;
char *copyTo = (char *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
if(dimension == sizeof(int)){
int *copyFrom = (int *)from;
int *copyTo = (int *)to;
for(int i = length; i < length; i++)
copyTo[i] = copyFrom[i];
}
}
{感谢您的帮助=)}
void copyOfArray( void *from, void *to, int dimension, int length ) {
memcpy(to, from, dimension * length);
}
真正想要的,用memcpy
就可以实现,无需再造。为了您的方便,您可以用 copy_of_array
包装它,甚至用 copy2
包装 copy_of_array
(只要数组是静态分配的)。
#include <string.h>
#include <stdio.h>
#define copy2(src, dst, count, shift) copy_of_array(src, dst, count, sizeof(src[0]), shift)
copy_of_array (void * src,
void * dst,
int count,
int elem_size,
int shift)
{
memcpy (dst, (char*)src + elem_size * shift, count * elem_size);
}
int main() {
int i;
int ione[4] = { 1, 2, 3, 4};
int itwo[2] = { 0, 0 };
char cone[4] = { 'a', 'b', 'c', 'd'};
char ctwo[2] = { 'x', 'y' };
copy_of_array(ione, itwo, 1, sizeof(int), 3);
for (i=0; i<2; i++ )
printf("%d ", itwo[i] );
copy2(cone, ctwo, 1, 3);
for (i=0; i<2; i++ )
printf("%c ", ctwo[i] );
}