I am new to C and learning structs. I am trying to malloc a char pointer with size 30 but it is giving a segmentation fault(core dump). I searched it on the internet & SO but am not able to resolve this. Any help will be much appreciated.
Probably I am accessing the char* member of the struct incorrectly ?
typedef struct{ int x; int y; char *f; char *l; }str; void create_mall(); void create_mall() //Malloc the struct { str *p; p->f = (char*)malloc(sizeof(char)*30); // segmentation fault here p->l = (char*)malloc(sizeof(char)*30); printf("Enter the user ID:"); scanf("%d",&p->x); printf("\nEnter the phone number:"); scanf("%d",&p->y); printf("\nEnter the First name:"); scanf("%29s",p->f); printf("\nEnter the Last name:"); scanf("%29s",p->l); printf("\nEntered values are: %d %d %s %s\n",p->x,p->y,p->f,p->l); } int main(void) { create_mall(); return 0; }
void create_mall();simply announces the presence of a function calledcreate_mall()that returns no value but which takes any (fixed) number of arguments of indeterminate type. This is quite different fromvoid create_mall(void);which says there's a function calledcreate_mall()that returns no value and takes no arguments. In other words, what you've provided is not a prototype for the function in C. (In C++, it would be a prototype for a function taking no arguments and returning no value, but the language tag is C, not C++.)