I have a structure in c and I want to allocate memory for an array of my structure, for this I'd created a function. The problem is that only first element of array is working. If I do allocation in main, it is working.
Here is my code:
typedef struct {
    int id;
    char* name;
}Car;
void read(Car**cars){
    int n,i;
    char name[50];
    printf("Cars:"); scanf("%i",&n);
    *cars = (Car*) malloc(n * sizeof(Car));
    for(i=0;i<n;i++) {
        printf("\nCar Name[%i]: ",i);   scanf("%s",name);
       (*cars[i]).id   = i; //when i>0 then It crash here...
       (*cars[i]).name = (char*) malloc(strlen(name)+1);
        strcpy((*cars[i]).name, name);
        printf("Cars Name -> %s ", (*cars[i]).name);
    } 
}
int main() {
   Car *cars = NULL;
   read(&cars);
   return 0;
}
what I am doing wrong?
 
    