从C中的函数返回合并数组
我有以下代码:从C中的函数返回合并数组,c,arrays,C,Arrays,我有以下代码: #include <stdio.h> #include <stdlib.h> #include <time.h> typedef struct _item { int v, w; } item; void printItems(item *t, int n) { int i; for(i= 0; i < n; i++) printf("%4i",t[i].v); printf("\n"); } ite
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
typedef struct _item {
int v, w;
} item;
void printItems(item *t, int n) {
int i;
for(i= 0; i < n; i++)
printf("%4i",t[i].v);
printf("\n");
}
item * newItemSet(int n) {
int i;
item *t = (item*)malloc(sizeof(item));
for (i = 0; i < n; i++){
(t+i)->v = rand()%100;
(t+i)->w = rand()%100;
}
return t;
}
item * mer(item*a, int n, item*b, int m) {
int size = m+n;
item*q = (item*)malloc(sizeof(item)*size);
int i, c;
c = 0;
printf("a----\n");
printItems(a,n);
printf("b----\n");
printItems(b,m);
for(i = 0; i<n; i++) {
q[c] = a[i];
c++;
}
for(i = 0; i<m; i++) {
q[c] = b[i];
c++;
}
printItems(q,size);
return q;
}
int main(void) {
srand(time(NULL));
item * a = newItemSet(6);
item *b = newItemSet(6);
item *c = mer(a,6,b,6);
printItems(c,12);
return 0;
}
#包括
#包括
#包括
类型定义结构项{
int v,w;
}项目;
无效打印项目(项目*t,整数n){
int i;
对于(i=0;iv=rand()%100;
(t+i)->w=rand()%100;
}
返回t;
}
项目*mer(项目*a,整数n,项目*b,整数m){
int size=m+n;
项目*q=(项目*)malloc(项目*尺寸);
int i,c;
c=0;
printf(“a----\n”);
打印项目(a,n);
printf(“b----\n”);
打印项目(b,m);
对于(i=0;i
应该是:
item *t = malloc(n * sizeof(item));
您正在为n
项分配空间,而不是一个项
。此外,不需要强制转换malloc
的返回值,它可以隐藏错误
应该是:
item *t = malloc(n * sizeof(item));
您正在为n
项分配空间,而不是一个项
。此外,不需要强制转换malloc
的返回值,它可以隐藏错误。对newItemSet
的分配似乎不正确。它应该是:
item *t = malloc(sizeof(item) * n);
newItemSet
的分配似乎不正确。它应该是:
item *t = malloc(sizeof(item) * n);