Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Array-concatenation/C/array-concatenation.c
Normal file
32
Task/Array-concatenation/C/array-concatenation.c
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define ARRAY_CONCAT(TYPE, A, An, B, Bn) \
|
||||
(TYPE *)array_concat((const void *)(A), (An), (const void *)(B), (Bn), sizeof(TYPE));
|
||||
|
||||
void *array_concat(const void *a, size_t an,
|
||||
const void *b, size_t bn, size_t s)
|
||||
{
|
||||
char *p = malloc(s * (an + bn));
|
||||
memcpy(p, a, an*s);
|
||||
memcpy(p + an*s, b, bn*s);
|
||||
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(int, a, 5, b, 5);
|
||||
|
||||
for(i = 0; i < 10; i++)
|
||||
printf("%d\n", c[i]);
|
||||
|
||||
free(c);
|
||||
return EXIT_SUCCCESS;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue