Cで2つの配列を連結するプログラムを作成していました。3番目の配列にメモリを割り当てmemcpy
、2つの配列から3番目の配列にバイトをコピーするために使用しています。テスト出力は次のとおりです。
1 2 3 4 5 0 0 0 0 0
このアプローチに何か問題がありますか?
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int *array_concat(const void *a, int an,
const void *b, int bn)
{
int *p = malloc(sizeof(int) * (an + bn));
memcpy(p, a, an*sizeof(int));
memcpy(p + an*sizeof(int), b, bn*sizeof(int));
return p;
}
// testing
const int a[] = { 1, 2, 3, 4, 5 };
const int b[] = { 6, 7, 8, 9, 0 };
int main(void)
{
unsigned int i;
int *c = array_concat(a, 5, b, 5);
for(i = 0; i < 10; i++)
printf("%d\n", c[i]);
free(c);
return 0;
}