Definition | #include <string.h> size_t strxfrm(char *s1, const char *s2, size_t n);
Ein Vergleich von zwei mit |
Returnwert | Länge der transformierten Zeichenkette (exklusive des abschließenden Nullbytes). |
Hinweise | Als Argument s2 wird eine Zeichenkette erwartet, die mit dem Nullbyte abgeschlossen ist. Die Zeichenkette s2 wird durch Falls der Returnwert größer oder gleich n ist, ist der Inhalt der Zeichenkette s1 unbestimmbar, da kein Nullbyte geschrieben wurde. Ist in der aktuellen Lokalität einem der Zeichen in der Zeichenkette s2 der sedezimale Wert 0 zugeordnet, schließt dieses Zeichen als Nullbyte die transformierte Zeichenkette ab (vgl. "Benutzerspezifische Lokalitäten"). Bei sich überlappenden Speicherbereichen ist das Verhalten undefiniert. Das Lokalitätskonzept ist ausführlich im Kapitel "Lokalität“ beschrieben. |
Beispiel | #include <stdio.h> #include <string.h> #include <locale.h> int main(void) { char alpha2[11]; char num2[11]; int comp1; int comp2; int comp3; size_t i = 11; char *alpha1 = "ABCDEFGHIJ"; char *num1 = "0123456789"; setlocale(LC_COLLATE, "ANNE"); /* Aktivieren der benutzerspezifischen Lokalität, in der die Ziffern einen niedrigeren Sortierwert haben als die Buchstaben */ comp1 = strcoll(alpha1, num1); /* Vergleich der originären Zeichen- */ if(comp1 > 0) /* ketten mit strcoll */ printf ("alpha1 groesser num1\n"); else printf("Fehler\n"); comp2 = strcmp(alpha1, num1); /* Vergleich der originären Zeichen- */ if(comp2 < 0) /* ketten mit strcmp */ printf ("alpha1 kleiner num1\n"); else printf("Fehler\n"); strxfrm(num2, num1, i); /* Transfomieren mit strxfrm */ strxfrm(alpha2, alpha1, i); comp3 = strcmp(alpha2, num2); /* Vergleich der transformierten */ if(comp3 > 0) /* Ergebniszeichenketten mit strcmp */ printf ("alpha2 groesser num2\n"); else printf("Fehler\n"); return 0; } |
Siehe auch
setlocale, strcoll, strcmp