www.mikrocontroller.net

Forum: Compiler & IDEs Variable Tabelle mit Strings in Hex


Autor: Daniel B. (dbuergin)
Datum:

Bewertung
0 lesenswert
nicht 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
char *conv[] = {
              "ABC", "E"
               };

void main(void) {}

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

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

Autor: Grrrr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mobius (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
char *dummy = "Dies ist ein Beep: \x7\x7\x7 ";

gruß
Mobius

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

Autor: Daniel B. (dbuergin)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.