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