PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : string arry alphabetisch sortieren?



stocki
15-01-2005, 12:41
guuuuude !!!

wie kann ich ein string arry alphabetisch sortieren?
danke

michael.sprick
15-01-2005, 13:14
Sprache????

RapidMax
16-01-2005, 15:47
Kein Deutsch, das mal sicher...

tracer87
16-01-2005, 16:06
ich wette c :)
ich würds einfach mit bubblesort oder so machen :)
ist einfach und schnell programmiert :D

stocki
18-01-2005, 17:14
guuuuude !!!

wie kann ich ein string array alphabetisch sortieren?
danke


LOL ja voll vergessen..... ja C ist die sprache...*g*

wraith
18-01-2005, 17:38
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int compare(const void* left,const void* right)
{
return strcmp(*(char**)left,*(char**)right);
}

int main()
{
char *array[3] = { "Hello World","Hallo Welt","WhatEver" };
int i;

qsort(array,3,sizeof *array,compare);

for(i = 0;i < 3;i++)
printf("%s\n",array[i]);

return 0;
}

Jetzt ist aber Groß/Kleinschreibung wichtig, wenn das nicht entscheidend sein soll, dann mußt du die compare Funktion selber schreiben, andere Möglichkeit (wenn auch nicht C Standard) man strcasecmp (http://www.rt.com/man/strcasecmp.3.html) (einfach strcmp ersetzen).

Joghurt
19-01-2005, 01:32
Warum noch die Extrafunktion? Es reicht ein einfaches

qsort(array,3,sizeof(*array),strcmp)
Und wenn dich die Warnung stört, mach ein

qsort(array,3,sizeof(*array),(int(*)(const void*,const void*))strcmp)

wraith
19-01-2005, 08:54
Warum noch die Extrafunktion?
Der Wrapper ist nötig.
http://www.google.de/groups?selm=27264%40dog.ee.lbl.gov&output=gplain
(alles interessant, wichtig hier aber speziell die letzte 'Seite').
Ich denke der Link macht es noch etwas klarer
http://www.google.de/groups?selm=bhfjus%24k7d%241%40elf.eng.bsdi.com&output=gplain

In der Errata-List zu K&R 2 steht auch noch was dazu (dort wurde nämlich auch nur strcmp gecastet).

Aber von allem das beste Argument: Es funktioniert einfach nicht.
Vielleicht bei dir, bei mir schon nicht mehr.

nobody0
20-01-2005, 23:15
Ja, benötigt werden von der Sortier-Funktion Pointer auf die Objekte und das sind hier char-Pointer; insgesammt also Pointer auf char-Pointer.

Wirklich erstaunlich, dass es mit dem gcc sogar ohne Fehlermeldung funktioniert, auch wenn eine Indirektion fehl :eek: