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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.