die vom User gegebenen Werte vergleichen und die kleinste Zahl erhalten?
struct min_result {
int key;
unsigned value;
};
/**
* Find the minimum value in an array
*
* @param haystack The array to search.
* @param length The number of elements in the array.
* @return The minimum value in the array
* @pre haystack != NULL
* @pre length > 0
*/
struct min_result min(unsigned haystack[], int length) {
struct min_result result;
result.key = 0;
result.value = haystack[0];
for (int i = 1; i < length; ++i) {
if (haystack[i] < result.value) {
result.key = i;
result.value = haystack[i];
}
}
return result;
}
if (strlen(Name) > LENGTH) {
Zu diesem Zeitpunkt wurden im Array Name
potentiell schon mehr als LENGTH
Zeichen abgelegt und somit eine Schutzverletzung begangen. Verwende stattdessen %19s
um maximal 19 Zeichen einzulesen (ein Platz im Array muss frei bleiben für die abschließende \0
).
Besser noch, teile die Eingabe in zwei Schritte auf, eine für den Namen und eine für das Alter. Die conversion specification s
ließt nämlich maximal bis zum nächsten Leerzeichen. Wenn du die Eingabe aufteilst, dann kannst du mittels %19[^\n]
bis zum Zeilenende lesen und damit auch Namen wie "von Zimmerschneit" verarbeiten.