int main(void) { char* topic1 = "Hello"; int time1 = 10; int room1 = 1001; struct Meeting* Meeting1 = create_Meeting(time1, topic1); struct Room* Room1 = create_Room(room1); printf("%d\n", add_Room_Meeting(Room1, Meeting1)); // 0 printf("%d\n", add_Room_Meeting(Room1, Meeting1)); // -1 print_Meeting(find_Room_Meeting(Room1, time1)); printf("%d\n", remove_Room_Meeting(Room1, Meeting1)); // 0 printf("%d\n", remove_Room_Meeting(Room1, Meeting1)); // -1 printf("%d\n", add_Room_Meeting(Room1, Meeting1)); // 0 clear_Room(Room1); print_Room(Room1); const char *topicA = "Whisky", *topicB = "Tango"; const char *firstname1 = "Bo", *lastname1 = "Jackson", *phoneno1 = "123"; const char *firstname2 = "Mike", *lastname2 = "David", *phoneno2 = "456"; struct Person* person1 = create_Person(firstname1, lastname1, phoneno1); struct Person* person2 = create_Person(firstname2, lastname2, phoneno2); struct Meeting *new_Meeting1 = create_Meeting(10, topicA); struct Meeting *new_Meeting2 = create_Meeting(9, topicB); struct Ordered_container* people = OC_create_container((OC_comp_fp_t) compare_Person_lastname); OC_insert(people, person1); OC_insert(people, person2); struct Room* room2 = create_Room(1000); add_Meeting_participant(new_Meeting1, person1); add_Meeting_participant(new_Meeting1, person2); add_Room_Meeting(room2, new_Meeting1); add_Room_Meeting(room2, new_Meeting2); printf("\n...saveload/file...\n"); FILE *fp = fopen("Room_savefile.txt", "w"); save_Room(room2, fp); fclose(fp); fp = fopen("Room_savefile.txt", "r"); struct Room *new_Room = load_Room(fp, people); print_Room(new_Room); fclose(fp); }
/* Read a Meeting's data from a file stream, create the data object and return a pointer to it, NULL if invalid data discovered in file. No check made for whether the Meeting already exists or not. */ struct Meeting* load_Meeting(FILE* input_file, const struct Ordered_container* people) { struct Meeting* newMeeting; int meetingTime; int numParticipants; char topicBuffer[BUFFER_SIZE]; char lastnameBuffer[BUFFER_SIZE]; int i; if (fscanf(input_file, "%d", &meetingTime) != 1) { return NULL; } if(SAFEFSCANF(input_file, topicBuffer) != 1) { return NULL; } if (fscanf(input_file, "%d", &numParticipants) != 1) { return NULL; } newMeeting = create_Meeting(meetingTime, topicBuffer); for (i = 0; i < numParticipants; i++) { struct Person* participant; if(SAFEFSCANF(input_file, lastnameBuffer) != 1 || !(participant = findPersonByLastname(people, lastnameBuffer)) || add_Meeting_participant(newMeeting, participant)) { destroy_Meeting(newMeeting); return NULL; } } return newMeeting; }
void addMeeting(struct Ordered_container* rooms) { int roomNum; int time; struct Room* room; struct Meeting* meeting; char topicBuffer[MAX_STRING_LENGTH]; if ((roomNum = scanRoomNum()) == -1) { return; } if (!(room = findRoomByNum(rooms, &roomNum))) { printErrNoRoom(); return; } if ((time = scanMeetingTime()) == -1) { return; } if (findMeetingByTime(get_Room_Meetings(room), &time)) { printErrMeetingExist(); return; } SAFESCANF(topicBuffer); meeting = create_Meeting(time, topicBuffer); add_Room_Meeting(room, meeting); printf("Meeting added at %d\n", time); }