I want to know how to assign a struct containing an array of int to an array of structs. I keep getting the incorrect result no matter what new solution I think of.
I believe the problem lies in this piece of code:
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; } The whole code:
#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 Actual Result:
0 1 2 3 Expected Result:
0 1 2 3 0 1 2 3