From dc74f6e30635210d205403fed017d22235e1bb93 Mon Sep 17 00:00:00 2001 From: paulusja Date: Thu, 12 Nov 2026 11:06:59 +0100 Subject: [PATCH] Add solution. --- 07_zeiger_const/stringsortierung.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/07_zeiger_const/stringsortierung.c b/07_zeiger_const/stringsortierung.c index a9ff647..b93c162 100644 --- a/07_zeiger_const/stringsortierung.c +++ b/07_zeiger_const/stringsortierung.c @@ -13,6 +13,7 @@ #include void gibStringsAus(const char *strings[], unsigned int anzahl); +int compare(const void *arg1, const void *arg2); int main() { @@ -23,6 +24,7 @@ int main() gibStringsAus(strings, anzahlStrings); // TODO: Hier sortieren + qsort(strings, anzahlStrings, sizeof(*strings), compare); printf("\nNach Sortierung:\n"); gibStringsAus(strings, anzahlStrings); @@ -37,3 +39,18 @@ void gibStringsAus(const char *strings[], unsigned int anzahl) printf("%s\n", strings[i]); } } + +int compare(const void *arg1, const void *arg2) +{ + const char *str1 = *((const char **)arg1); + const char *str2 = *((const char **)arg2); + + if(!isdigit(str1[0]) && !isdigit(str2[0])) + return strcmp(str1, str2); + else if(isdigit(str1[0]) && isdigit(str2[0])) + return strcmp(str2, str1); + else if(isdigit(str1[0])) + return 1; + else + return -1; +}