Я хочу знать, как назначить структуру, содержащую массив int, в массив структур. Я продолжаю получать неверный результат независимо от того, какое новое решение я думаю.Как правильно назначить структуру, содержащую массив int, в массив struct?
Я считаю, что проблема лежит в этой части кода:
struct Codes *create(int as) {
struct Codes *c = malloc(sizeof (struct Codes)+as * sizeof (int));
c->as = as;
for (int i = 0; i < as; i++) {
c->a[i] = i;
}
return c;
}
Весь код:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
struct Codes {
int as;
int a[];
};
struct Code {
int as;
struct Codes *ci[];
};
struct Codes *create(int as) {
struct Codes *c = malloc(sizeof (struct Codes)+as * sizeof (int));
c->as = as;
for (int i = 0; i < as; i++) {
c->a[i] = i;
}
return c;
}
struct Code *and(int as, struct Codes *cd) {
struct Code *c = malloc(sizeof (struct Code)+as * sizeof (struct Codes));
for (int i = 0; i < as; i++) {
c->ci[i] = cd;
}
c->as = as;
return c;
}
int main(int argc, char **argv) {
struct Codes *cd;
cd = create(4);
struct Code *c;
c = and(2, cd);
for (int i = 0; i < c->as; i += 1) {
for (int j=0; j < c->ci[i]->as; j++) {
printf("%d \n", c->ci[i]->a[j]);
}
}
free(cd);
free(c);
}//main
Фактический результат:
0
1
2
3
Ожидаемый результат:
0
1
2
3
0
1
2
3
Было бы неплохо узнать, как использовать отладчик и уметь самостоятельно находить эти вещи, проверяя значения переменных по мере запуска вашей программы. –
Простите, я не знаю, как я это испортил, и спасибо за помощь. –