#include #include #include #include "namesarchive.h" static char names[MAX_NAMES][MAX_NAME_LEN]; static unsigned int numberOfNames = 0; static int findNameIdx(const char *name); static void removeNameByIdx(unsigned int idx); // Fügt einen Namen hinzu. Im Fehlerfall (Archiv ist voll) soll 0, ansonsten 1 zurückgegeben werden. // Ist der angegebene Name länger als die zulässige Namenslänge, wird der Name abgeschnitten hinzugefügt. Rückgabe ist dann 1. int addName(const char *name) { if(numberOfNames < MAX_NAMES) { strncpy(names[numberOfNames], name, MAX_NAME_LEN); names[numberOfNames][MAX_NAME_LEN-1] = '\0'; numberOfNames++; return 1; } else return 0; } // Wie addName. Fügt Namen aber direkt sortiert hinzu. Voraussetzung ist ein bereits sortiertes Archiv. int addNameSorted(const char *name) { return 0; } // Entfernt den angegebenen Namen. Gibt bei Erfolg 1 zurück, ansonsten 0 (Name konnte nicht gefunden werden). int removeName(const char *name) { int nameIdx = findNameIdx(name); if(nameIdx >= 0) { removeNameByIdx(nameIdx); return 1; } else return 0; } int findNameIdx(const char *name) { for(int i = 0; i < numberOfNames; i++) { if(strcmp(names[i], name) == 0) { return i; } } return -1; } void removeNameByIdx(unsigned int idx) { for(unsigned i = idx+1; i < numberOfNames; i++) { strncpy(names[i-1], names[i], MAX_NAME_LEN); names[i-1][MAX_NAME_LEN-1] = '\0'; } numberOfNames--; } // Sortiert die Namen im Archiv aufsteigend. void sortNames() { } // Gibt die Namen zeilenweise aus. void printNames() { for(int i = 0; i < numberOfNames; i++) { printf("%s\n", names[i]); } }