Files
info2_uebungen/05_structs/main.c
T
2026-10-29 14:32:39 +01:00

98 lines
2.2 KiB
C

/*
* 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#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;
}