Forum: Compiler & IDEs Variable Tabelle mit Strings in Hex


von Daniel B. (dbuergin)


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

von Grrrr (Gast)


Lesenswert?

Lies mal ein C-Buch da steht das alles drin.
Ich weiss, Du willst das nur mal schnell wissen, aber hier fragen am Tag 
so 20 - 50 Leute nach so trivialem Zeug. Das ist einfach uninteressant.

von Mobius (Gast)


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

von Daniel B. (dbuergin)


Lesenswert?

Besten Dank, genau das habe ich gesucht. Im Moment habe ich eben
die Tabelle mit der definierten zweiten Dimension, und das wollte ich
optimieren.

Gruss
Daniel

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.