stricmp und Sonderzeichen

02/03/2008 - 17:52 von Marcel Müller | Report spam
Hallo,

ist das Verhalten von stricmp bezüglich Sonderzeichen, deren ASCII-Wert
zwischen den Groß- und den Kleinbuchstaben liegt wohl definiert?

Also, ich habe die Strings

char* array[] = { "abc", "b_xx", "bcd" };

Ist garantiert, dass diese Strings bezüglich des Vergleichsoperators
stricmp wohl sortiert sind?

Das Problem ist der Unterstrich. Wenn stricmp nach Großbuchstaben
konvertiert, um zu vergleichen, liegt der Unterstrich /hinter/ 'Z', wenn
hingegen Kleinbuchstaben verglichen werden, liegt er /vor/ 'a'.

In meinen Fall gilt letzteres. Aber ich bin mir über die Portabilitàt
nicht im Klaren. Aus der Runtime-Doku geht nicht hervor, ob es standard
oder implementationsspezifisch ist.


Verwendungszweck:

Konstante Dispatch-Tabellen eines Parsers, in denen mit bsearch die
Schlüsselworte gesucht werden. Die Schlüsselworte enthalten nur
[A-Za-z0-9_]. Insofern interessieren mich NLS-Aspekte nicht.


Marcel
 

Lesen sie die antworten

#1 ram
02/03/2008 - 18:15 | Warnen spam
Marcel Müller writes:
ist das Verhalten von stricmp bezüglich Sonderzeichen, deren ASCII-Wert
zwischen den Groß- und den Kleinbuchstaben liegt wohl definiert?



In ISO/IEC 9899:1999 (E) gibt es nichts, das »stricmp«
genannt wird.

Die Zeichenkodierung (z.B. »ANSI_X3.4-1968«) ist in
ISO/IEC 9899:1999 (E) auch nicht festgelegt.

Folge also der Dokumentation der von Dir genutzten
C-Implementation und der von Dir genutzten Funktionsbibliothek.

Ähnliche fragen