Monday 15 February 2010

Creating an address book using C with structures -



Creating an address book using C with structures -

my intent create address book containing 10 contacts using c's structures. user must insert contacts 1 1 , programme should print entire address book. compilation successful when run program, prints first contact , segmentation fault. code:

file ex7.h:

#include<stdio.h> #include<stdlib.h> #include<string.h> #define dim 10 struct person { char name[40]; char surname[40]; char date[11]; char number[11]; }; typedef struct person person; void dataentry(person *person); void printperson(person person); void printaddressbook(person *addbook[10]);

file ex7.c:

#include "ex7.h" void dataentry(person *person) { printf("insert name: "); gets(person -> name); printf("insert surname: "); gets(person -> surname); printf("insert date of birth [mm/dd/yyyy]: "); gets(person -> date); printf("insert phone number: "); gets(person -> number); } void printperson(person person) { printf("name: %s\n", person.name); printf("surname: %s\n", person.surname); printf("date of birth: %s\n", person.date); printf("number: %s\n\n", person.number); } void printaddressbook(person *addbook[10]) { (int = 0; < dim; i++) { printperson(*addbook[i]); } }

file main.c:

#include "ex7.h" int main(void) { person* addbook = (person*) malloc(dim*sizeof(person)); printf("data entry\n\n"); (int = 0; < dim; i++) { printf("person %d:\n", i); dataentry(&addbook[i]); } printf("\n\nprinting address book...\n\n"); printaddressbook(&addbook); homecoming 0; }

then compiled typing: gcc -o main main.c ex7.c -std=c99

the problem in part:

void printaddressbook(person *addbook[10]) { (int = 0; < dim; i++) { printperson(*addbook[i]); } }

the method expects array of person pointers in main passing pointer persons array, not persons array allocated. alter method into:

void printaddressbook(person *addbook) { (int = 0; < dim; i++) { printperson(addbook[i]); } }

and in main phone call way:

printaddressbook(addbook);

c

No comments:

Post a Comment