Zeiger auf String-Array in C

8

Das Spielen mit Zeigern in C macht Spaß (nicht wirklich).

Ich habe mehrere Arrays von Strings, die ich einfach deklarieren möchte, vorzugsweise so etwas wie:

%Vor%

Ähnlich wie ein Übersetzungs-Array (aber nicht ganz), also möchte ich während der Laufzeit zwischen diesen wechseln können. Dafür möchte ich einen Zeiger pointerToArrayOfStrings , den ich tauschen kann wie:

%Vor%

In meinem naiven Verständnis von Arrays von Strings und Zeigern habe ich Folgendes versucht:

%Vor%

Sprache ist ein char * mit der Sprache "en-GB", "da-DK" usw., streq() ist nur eine selbst erzeugte (etwas schneller als strcmp() ) Zeichenkettenvergleichsfunktion.

Lange Rede, kurzer Sinn, je nach Compiler kann dieser Ansatz funktionieren, Compiler-Warnungen melden oder kompilieren, aber unerwartete Ergebnisse liefern.

Was wäre der richtige Weg, um dieses Problem zu lösen?

    
Woodgnome 11.01.2012, 17:45
quelle

2 Antworten

20

Es gibt zwei Möglichkeiten, mit einem Array von Zeichen (Strings) in C zu arbeiten. Sie sind wie folgt:

%Vor%

Bildliche Darstellung ist als Inline-Kommentar im Code verfügbar.

Je nachdem, wie Sie das Array von Zeichen (Strings) darstellen möchten, können Sie den Zeiger wie folgt definieren:

%Vor%

Sie sind grundsätzlich verschiedene Arten (auf eine subtile Weise) und so sind die Zeiger auf sie auch etwas anders.

Das folgende Beispiel zeigt die verschiedenen Möglichkeiten, mit Zeichenfolgen in C zu arbeiten, und ich hoffe, es hilft Ihnen, ein Array von Zeichen (Strings) in C besser zu verstehen.

%Vor%     
Sangeeth Saravanaraj 11.01.2012, 18:33
quelle
1
  

Was wäre der richtige Weg, um dieses Problem zu lösen?

Nun, der richtige Weg wäre, eine Bibliothek zu verwenden, die speziell für den Umgang mit mehrsprachigen Oberflächen entwickelt wurde - zum Beispiel gettext .

Eine andere Möglichkeit, wenn auch lückenhafter, wäre die Verwendung einer Hash-Tabelle (auch bekannt als "Wörterbuch" oder "Hash") Karte "oder" assoziative Karte "in anderen Sprachen / Technologien): Auf der Suche nach einer guten Hash-Tabellenimplementierung in C

Es ist wahrscheinlich nicht die Antwort, nach der Sie gesucht haben, aber Sie haben die falsche Frage nach dem richtigen Problem gestellt.

    
Flavius 11.01.2012 18:13
quelle

Tags und Links