Es gibt eine Vielzahl wichtiger solcher sog. ESCAPE-Controlsequenzen.
Wichtig ist, dass diese im Programmcode in single-quotes (') verwendet
werden, genau so, als würde man z.B. 'A' oder 65 zuweisen. Der Compiler
erkennt dies und setzt den entsprechenden Zahlenwert dafür ein. Das
Programm wird dadurch lesbarer.
Für das Ende einer Zeichenkette wird idR. '\0' (HEX 0x00) verwendet.
'\r' steht für Carriage Return (Wagenrücklauf, zurück an den Anfang der
Zeile), und '\n' steht für newline (eine zeile tiefer).
Andere sind z.B. '\t' für TAB.
In printf erzielt man mit '\n' meist ein CR + LF, das ist aber
betriebssysteminterpretation. M$, Linux und MAC-OS benötigen alle
verschiedene Kombinationen aus CR und LF für "Neue Zeile, Vursor an
Anfang".
Für simples printf-retargeting (ARM) findet man daher häufig:
1 | int fputc(int c, FILE *f)
|
2 | {
|
3 | if(c=='\n')
|
4 | {
|
5 | wait_for_uart_ready();
|
6 | uart_data = '\r';
|
7 | }
|
8 | wait_for_uart_ready();
|
9 | uart_data = c;
|
10 | }
|
Was das Problem auch dahingehend abfängt, dass ein zusätzliches CR nicht
schadet :-)
Greetz,
/r.