Hallo, ich definiere folgenden Zeiger fuer die LCD-Ausgabe: const char *text="ABCDEFG" Mit printf(text) erhalte ich die Zeichenkette zurueck. Wie mache ich es, wenn ich in die Zeichenkette ein Sonderzeichen einfuegen moechte, z. B dass die Ausgabe heisst "Winkel in ° ist:". In Assembler wuerde es ja mit: "Winkel in ", 0xHexcode, " ist:" gehen. In GCC nimmt er das so nicht an. Wie kann ich es dort machen? Danke, Thomas H.
:
Gesperrt durch User
Das geht mit dem "/", leider haben die C-Erfinder aber Oktalzahlen genommen, also "/001" bis "/377" sind möglich. "ein sonderzeichen/002und noch eins/376 usw." Peter
Geht selbstverständlich auch mit Hexzahlen, einfach ein x vor die zweistellige Hexzahl setzen: const char *text = "Winkel is \xB0 Grad"; Gruss Christian
...und falls die Abgrenzung damit nicht eindeutig sein sollte, erinnert man sich daran, daß C89's Ausweg daraus das Zusammenhängen nebeineinanderstehender Strings zu einem ist: const char *foo = "Der Abstand zwischen " "\xb5" "1 und \xb5" "2 betr\xe4gt: %f"; (\xb5 -> µ) Wenn man "\xb51" schreiben würde, wäre das (wide) char mit dem Wert 0xb51 gemeint, was ja nicht ganz das ist, was man haben möchte. Eine ähnliche Vorgehensweise muß man prinzipiell auch bei Oktalzeichen machen, allerdings ist dort die mögliche Kollision mit den nachfolgenden Zeichen seltener. Es ist aber eine irrige Annahme, daß oktal angegebene Zeichen immer mit exakt drei Stellen angenommen würden und danach automatisch beendet sind. Kann sein, daß das im pre-C89 mal so war (,,K&R C''). Außerdem kann man natürlich das Sonderzeichen direkt in das string literal schreiben, dann muß nur die Codierung des Entwicklungssystems (bzw. dessen Editors) mit der des Zielsystems (des LCD in diesem Falle) übereinstimmen. Das ist bei vielen Unixen im Falle des LCD gegeben, bei Windows hängt es sicher von der Umgebung ab, da dort von MS-DOS CP437/850 über ,,ANSI'' (alias ISO 8859-1) bis zu UTF-8 alles der Fall sein kann.
Das mit dem \ funktioniert einwandfrei! Hatte das selbe Problem (LCD 16*4, HITACHI HD44780) und nun läuft es. Danke euch!
Klasse. Elf Jahre. Der Burke&Hare-Award 2015 ist Dir sicher.