I have a basic structure like this
typedef struct struck {
char* id;
char* mat;
int value;
char* place;
} *Truck;
And afunction like this which creates a new “instance” of that struct:
Truck CTruck(char* id, char* mat, int value, char* place) {
Truck nT = (Truck) malloc(sizeof (Truck));
nT->value = value;
strcpy(nT->id, id);
strcpy(nT->mat, mat);
strcpy(nT->place, place);
return nT;
}
I’m getting an error in the first strcpy. It compiles without problem.
Your typedef defines
Truckas astruct struck *, i.e. a pointer. So it’s size will be4or8depending on the architecture and not the size of the structUse
sizeof(*Truck)to get the actual size of the struct.You also need to allocate memory for the characters. The easiest way would be using
strdup().However, I would suggest changing your typedef so it’s an alias for the struct, not for a pointer to it:
In your function you then use this: