Forum: Knobelecke
Moderatoren: broesel, juergenThema: Dateinamen "richtig" sortieren
Re: Dateinamen "richtig" sortieren
jengelh am 12.10.2010 um 16:11
Re: Dateinamen "richtig" sortieren
saschakb am 15.04.2011 um 20:19
int strverscmp_simple(const char *s1, const char *s2)
{
if (!(s1==s2)) {
for(; *s1 == *s2; s1++, s2++)
if(!*s1) // diese if-Abfrage mit return 0 wird wegoptimiert
return 0;
if (isdigit(*s1) && !isdigit(*s2))
return -1;
if (isdigit(*s2) && !isdigit(*s1))
return 1;
return isdigit(*s1) ? atoi(s1) - atoi(s2) : *s1 - *s2;
}
return 0;
}
Tatsächlich wird bei mir
if(!*s1)
return 0;
vom GCC 4.6.0 schlichtweg wegoptimiert.
--
http://saschakb.tumblr.com
Fork me on Github: https://github.com/saschakb
Re: Dateinamen "richtig" sortieren
Anonym am 07.11.2011 um 08:55
dein Algorithmus funktioniert nicht. Die Ziffern MÜSSEN als Zahlen betrachtet werden und nach einer Zahl kann wieder ein Buchstabenbereich folgen. Desweiteren sollte eine solche Sortierung auch die Groß-/Kleinschreibung ignorieren und Umlaute berücksichtigst DU auch nicht korrekt.
