printf("Speicher konnte nicht erfolgreich alloziiert werden!\n");
44
returnbackupStorrage;
45
}
46
else{
47
(*length)++;
48
printf("%ld\n",*length);
49
printf("Speicher erfolgreich alloziiert!\n");
50
storrage[size_s-1]=item;
51
}
52
returnstorrage;
53
}
Irgendwie funktioniert das nicht ganz. Ich frag mich nur wieso. Das
Qsort übergibt als zweiten Buchstaben das klein i nach dem e vom Einser,
was aber nicht so sein soll. Ich habe auch ausdrücklich geschrieben
qsort(mem_strings[0]...
das heißt das Qsort sollte eigentlich jedes char*, sprich jede
Anfangsadresse des nächsten Strings übergeben, was es aber nicht tut.
Ich frage mich aber wieso das so ist?
Ich bin dankbar für jede Hilfe!
Was willst du sortieren, die Strings in mem_strings oder die einzelnen
Zeichen in mem_strings[0] ("Eins")? Dein Code enthält Hinweise auf
beides, macht aber keins von beidem richtig.
Edit: Falls die Strings sortiert werden sollen, nach welchem Kriterium
soll dies geschen? Lexikographisch oder nur nach dem Anfangsbuchstaben?
Yalu X. schrieb:> Edit: Falls die Strings sortiert werden sollen, nach welchem Kriterium> soll dies geschen? Lexikographisch oder nur nach dem Anfangsbuchstaben?
Genau, ich will sie nach Anfangsbuchstaben sortieren. Ich habe der
FUnktion compare getestet und ihr folgende Werte übergeben:
1
compare(mem_strings[0],mem_strings[1])
2
compare(mem_strings[2],mem_strings[3])
usw.. und erhalte nach konvertierung:
1
intcompare(constvoid*aa,constvoid*bb){
2
chara=(char)(*((int*)aa));
3
charb=(char)(*((int*)bb));
4
printf("%c \n%c\n\n",a,b);
5
returna-b;
6
}
immer nur die Anfangsbuchstaben, also wie gewollt! An der Funktion
Compare kann es also nicht liegen.
Dh im Qsort muss irgendetwas nicht stimmen...
Eine wahrscheinlich fehlerfrei funktionierende Funktion wie qsort,
entbindet Dich nicht davon genau zu spezifizieren, was und wie sortiert
werden soll.
Also ob "Zweifel" größer als "Zett" - oder etwa gleich - wg. [0].
Und natürlich die Abfragefunktion richtig zu implementieren.
Der Aufruf von qsort ist fehlerhaft. Du willst das Array mem_strings
sortieren und nicht nur dessen erstes Element. Deswegen:
Rufus Τ. Firefly schrieb:> Lass mal die [0] weg.
Die compare-Funktion stimmt dann auch nicht. Die übergebenen Argumente
sind Pointer auf char-Pointer, die ihrerseits Strings repräsentieren,
d.h. auf das jeweils erste Zeichen des Strings zeigen.
Folglich werden a und b wie folgt bestimmt: