Variable Tabelle mit Strings in Hex

OP #1816057
Lesenswert?

Hallo

Im Betreff seht Ihr, dass ich nicht genau weiss, wie ich mein Problem
formulieren muss, desshalb finde ich wohl auch nichts hier im Forum
und bei Google.

Ich möchte eine Tabelle mit unterschiedlich langen Strings machen, diese
aber als Hexwerte eingeben, da es nicht darstellbare Zeichen sind.

Also irgend wie so was
1
char *conv[] = {
2
              "ABC", "E"
3
               };
4

5
void main(void) {}

aber die einzelnen Strings in Hexform
1
char *conv[] = {
2
               {0x65,0x66,0x67,0x0}, {0x69,0x0}
3
               };
4

5
void main(void) {}

Das frisst aber der Compiler nicht.

gcc -o xx xx.c
xx.c:2: warning: braces around scalar initializer
xx.c:2: warning: (near initialization for ‘conv[0]’)
xx.c:2: warning: initialization makes pointer from integer without a 
cast
xx.c:2: warning: excess elements in scalar initializer
xx.c:2: warning: (near initialization for ‘conv[0]’)
xx.c:2: warning: excess elements in scalar initializer
xx.c:2: warning: (near initialization for ‘conv[0]’)
xx.c:2: warning: excess elements in scalar initializer
xx.c:2: warning: (near initialization for ‘conv[0]’)
xx.c:2: warning: braces around scalar initializer
xx.c:2: warning: (near initialization for ‘conv[1]’)
xx.c:2: warning: initialization makes pointer from integer without a 
cast
xx.c:2: warning: excess elements in scalar initializer
xx.c:2: warning: (near initialization for ‘conv[1]’)

Um ehrlich zu sein, verstehe ich die Warnings des Compilers nicht,
resp ich nehme an, er bemängelt die Notation.

Im Moment alles auf Linux mit dem gcc 4.4.1 dannach auf einem
ATMEGA128 mit avr-gcc 4.3.3

Besten Dank für jede Hilfe

Daniel
Gast #1816072
Lesenswert?

Das geht so niucht (wie dir ja schon der Compiler verraten hat). Wenn du 
das so machen willst (empfehle ich nicht) musst du die zweite Dimension 
des Arrays deklarieren (was du ja nicht willst, Stichwort variable 
Länge).

Was du suchst ist der Hex-Platzhalter in Strings \x. Damit kannst du 
nicht darstellbare Zeichen in Strings einfügen. Ein kleines Beispiel:
1
char *dummy = "Dies ist ein Beep: \x7\x7\x7 ";

gruß
Mobius

btw. http://lmgtfy.com/?q=C+String+non+printable+character

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren