/* * Vervollständigen Sie das untenstehende Programm, indem Sie das Modul namesarchive in der * namesarchive.h bzw. namesarchive.c implementieren. * Die öffentlichen Schnittstellen mit genaueren Details entnehmen Sie der namesarchive.h. * Das Programm soll das Modul als dynamische Laufzeitbibliothek nutzen. * */ #include #include #include #include "namesarchive.h" #define MAX_BUFFER_LEN 100 int inputPerson(Person *person); int inputName(char *buffer, unsigned int bufferSize); int inputAge(); int main() { Person person; printf("Wer soll hinzugefuegt werden?\n"); while(inputPerson(&person)) { if(addPerson(person)) printf("%s (Alter: %u) wurde dem Archiv hinzugefuegt.\n", person.name, person.age); else printf("Fehler! %s (Alter: %u) konnte nicht hinzugefuegt werden.\n", person.name, person.age); } printf("\nNach Eingabe:\n"); printPersons(); printf("\nNach Sortierung:\n"); sortPersons(); printPersons(); printf("\n"); printf("Wer soll entfernt werden?\n"); while(inputPerson(&person)) { if(removePerson(person)) printf("%s (Alter: %u) wurde aus dem Archiv entfernt.\n", person.name, person.age); else printf("Fehler! %s (Alter: %u) konnte nicht gefunden werden.\n", person.name, person.age); } printf("\nNach Entfernen:\n"); printPersons(); return EXIT_SUCCESS; } int inputPerson(Person *person) { if(inputName(person->name, MAX_NAME_LEN)) { person->age = inputAge(); return 1; } else return 0; } int inputName(char *buffer, unsigned int bufferSize) { printf("Name: "); if(fgets(buffer, bufferSize, stdin) != NULL) { if(buffer[strlen(buffer)-1] == '\n') buffer[strlen(buffer)-1] = '\0'; else while(getchar() != '\n') {} return strlen(buffer) > 0; } else return 0; } int inputAge() { int age = 0; printf("Alter: "); while(scanf("%d", &age) != 1 || age <= 0) { printf("Fehler! Erneute Eingabe: "); while(getchar() != '\n') {} } while(getchar() != '\n') {} return age; }