Hallo, ich würde gerne einen konstanten String an eine Funktion übergeben. funktion("Das ist der Text mit Sonderzeichen : x"); Wobei x ein Sonderzeichen ist (es steht nicht immer am Ende des Textes). Am schönsten wäre es, wenn man einige Zeichen wie \n oder so noch definieren könnte. Oder gibt es eine Möglichkeit Sonderzeichen direkt in den String zu schreiben? So ala "Texte mit \0x3f Sonderzeichen" ? sprintf usw würde ich gerne vermeiden. Es sollte möglichst klein sein (vom Flash) und es würde mich auch ein wenig stören, wenn der Controller einen Text zusammenbauen muss, den eigentlich der Compiler schon hätte zusammenbauen können. Ich hoffe ich konnte einigermassen ausdrücken was ich gerne möchte. Vielen Dank schonmal Gruß Philipp
"Texte mit \03 Sonderzeichen" \03 ist dabei das Zeichen mit dem ASCII Code 0x03
Vorsicht: Die Schreibweise \03 erwartet Oktalzahlen, \08 beispielsweise geht nicht. Besser \x03 in hexadezimaler Notation verwenden ...
Habs auch vorhin gemerkt :) \41 ergab ! und nicht A Woran wird eigentlich unterschieden ob ich \0 und danach ne Zahl in ein char* schreiben möchte oder ob es zB \03 sein soll? Gruß Philipp
Am Leerzeichen das dazwischen steht. Es gibt aber noch einen Trick. Der Compiler muss mehrere String-Literale die hintereinander aufgeführt werden zu einem einzigen zusammenfassen. D.h. ob du "Hallo " "Welt" oder "Hallo Welt" oder "Ha" "ll" "o W" "el" "t" schreibst ist völlig Wurscht. Ist immer dasselbe: Ein einziger String mit dem Inhalt "Hallo Welt" Damit kannst du schreiben "Texte mit " "\0x41" "5 Sonderzeichen" Du kannst natürlich dann auch mit Makros arbeiten // Wenn du zb. in einem LCD die Sonderzeichen 0x01 und // 0x02 mit Dreieck nach links bzw. Dreieck nach rechts // belegt hast #define LEFT "\0x01" #define RIGHT "\0x02" .... lcd_puts( LEFT " Ueberschrift " RIGHT ); Nach der Makro Expansion steht da: lcd_puts( "0x01" " Ueberschrift " "0x02" ); Und der Compiler zieht die einzelnen STrings zu einem zusammen: lcd_puts( "0x01 Ueberschrift 0x02" );
@Karl heinz Buchegger
> "Texte mit " "\0x41" "5 Sonderzeichen"
Korrektur!
Es muss heissen
"Texte mit " "\x41" "5 Sonderzeichen"
OHNE 0! Sonst meckert der Compiler, weil er \0 als NULL einfügt und den
Rest als normale Buchstaben. Und es gibt noch eine weitere Stolperfalle.
Man kann diese Sonderzeichen problemlos direkt in einen String schreiben
ala
"Das ist schön!" für ein Standard-LCD-> "Das ist sch\xEFn!"
Doch hier lauert McMurphy. In einem String wie "Ich bin am Drücker"
würde man intuitiv als "Ich bin am Dr\xF5cker" schreiben. Allerdings
interpretiert der Parser nicht F5 als Char, sondern F5C, weil ja der
nächste Buchstabe ein C ist. Da das nicht mehr in 8 Bit passt gibts ne
Warnung und es kommt auch Müll raus. Also immer schreiben
"Ich bin am Dr" "\xF5" "cker"
MfG
Falk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.