Hi
hab dir da mal was fertiggemacht. Allerdings solltest du da noch zur Sicherheit ein paar Prüfungen der Stringlänge einfügen (getline statt gets). Ausserdem musst du mal schauen ob bei dir das getc() nötig ist.
|
Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// maximale Stringlaenge
#define MAXSTRLEN 256
// compare 2 strings
int compstring(const void *p1, const void *p2)
{
return strcmp((*(char**)p1),(*(char**)p2));
}
int main()
{
int stranz=0,i;
char** strings;
// Anzahl der Strings einlesen
printf("Anzahl Strings: ");
scanf("%d",&stranz);
getc(stdin);
// Array für Strings anlegen
strings=(char**)calloc(stranz,sizeof(char*));
// Strings allozieren und eingeben lassen
for (i=0;i<stranz;++i) {
strings[i]=(char*)calloc(MAXSTRLEN,sizeof(char));
printf("String %d: ",i);
gets(strings[i]);
}
printf("Sortiere Strings ....");
// Array sortieren
qsort((void*)strings,stranz,sizeof(char*),compstring);
printf("fertig\n\n");
// Strings ausgeben und freigeben
for (i=0;i<stranz;++i) {
printf("\"%s\"\n",strings[i]);
free(strings[i]);
}
// Array freigeben
free(strings);
return 0;
}
|
mfg exnase
P.S: Da hab ich gleich noch ne Frage (an Jockel?

).
Ich wollte eigentlich direkt getline nehmen, aber da ichs unter Linux geschrieben hab und da getline sonderbarerweise ein
|
Source code
|
1
|
#define _GNU_SOURCE
|
(siehe man 3 getline) verlangte hab ichs gelassen.
Was soll dieses define da?