My friend once asked me a problem in C involving struct and pointers. I was confident that the solution I had proposed would work untill I finally gave it a try.
Among the common mistakes i could not avoid were not allocating memory before trying to use the pointers and trying to dereference a pointer as p->q->*num :)
#include <stdio.h> struct B { char *str; int *num; }; struct A { struct B *q; }; int main() { char *tstr = "Hello World"; /** * 1. The program should copy the value tstr in str and print it * 2. The program should assign value 100 to num and print it */ struct A *p; }
Posting the complete program showing the memory allocation and pointer dereferencing
#include <stdio.h> struct B { char *str; int *num; }; struct A { struct B *q; }; void* mem_alloc(size_t size) { void *ptr = (void *) malloc(size); if(NULL == ptr) { printf("ERROR: Insufficient Memory"); exit(-1); } return ptr; } int main() { char *tstr = "Hello World"; struct A *p; //allocate memory p = (struct A*) mem_alloc(sizeof (struct A)); p->q = (struct B*) mem_alloc(sizeof (struct B)); p->q->str = (char *) mem_alloc(strlen (tstr)); p->q->num = (int *) mem_alloc(sizeof (int)); //assign values strcpy(p->q->str, tstr); *p->q->num = 100; //print values printf("%s\n", p->q->str); printf("%d\n", *p->q->num); return 0; }
No comments :
Post a Comment