0 Daumen
52 Aufrufe

Hallo, Habe die Nummern 3 bis 9 nicht verstanden.

Könnte jemand das mit einem Beispiel erläutern?

Nr.
Escape-Sequenz
Bedeutung
1\rSetzt den Cursor an den Anfang der aktuellen Zeile (carriage return).
2\tFührt einen Zeilenvorschub aus und setzt den Cursor an die nächste horizontale Tabulatorposition \( - \) meistens acht Leerzeichen weiter (horizontal \( \mathrm{tab}) \).
3\v
Setzt den Cursor auf die nächste vertikale Tabulatorposition (vertical tab).
4\"
Gibt das Zeichen " aus.
5\'
Gibt das Zeichen ' aus.
6\?
Gibt das Zeichen ? aus.
7\\
Gibt das Zeichen \ aus.
8\nn \0nn
Gibt einen Oktalwert aus (beispielsweise \( \backslash 033= \) Escape-Zeichen). \( n \) ist eine Zahl zwischen 0 und 7.
9\xhh
Gibt einen Hexadezimalwert aus \( (\mathrm{h}=0,1,2,3,4,5,6,7,8,9, \mathrm{~A}, \mathrm{~B}, \mathrm{C}, \mathrm{D}, \mathrm{E}, \mathrm{F}) \)
von

1 Antwort

+1 Daumen

Escape-Sequenzen.jpg

Bei Linux werden mit ANSI die Text und Hintergrundeigenschaften so gesteuert. Damit kann ein farbiger Text im Terminal dargestellt werden. Man kann so bei UTF8 Zeichen darstellen, die so direkt nicht eingegeben werden können. Das aber bitte separat googeln. Ist sehr umfangreich dieses Thema. Das Beispiel wurde übrigens auf SUSE LINUX tumbleweed mit der IDE codelite und

gcc (SUSE Linux) 11.1.1 20210625 [revision 62bbb113ae68a7e724255e17143520735bcb9ec9]

erstellt.



Hier ein Exempel in c:

#include <stdio.h>

int main(int argc, char **argv)
{
printf("Dies \151\163\164 \x65\x69\x6E C-Programm.\n");
printf("Dies ist ein \v C-Programm.\n");
printf("Dies -> \\ ist ein Backslash, oder \?\n");
printf("Testtext von \\\" \"Hallo!\" oder \? Nun ein Kommentar \'Wichtig!\'\n");
printf("Backslash (\\) oktal: \134 hexadezimal:\x5c \n");

return 0;
}

Diesen Quelltext stelle ich unter GPL.

von

Ich mache NUR einen nach dem andren

also no 3, hat noch nicht funktioniert. Warum?

blob.png

Text erkannt:

View Search Project Build Debug Fortran wxSmith Tools loolst Pluqins DoxyBlocks Settings Heln

Eigentlich handelt es sich bei den Escape-Sequenzen um ASCII-Steuerzeichen von 0 bis 31:

Bedeutung der ASCII-Zeichen von 0 bis 32 als Steuerzeichen für
Datenübertragung, Drucker, Bildschirmsteuerzeichen, usw.:
00 NULL, no Operation, NUL keine Operation
01 Start of Heading SOH Vorspannanfang
02 Start of Text STX Textanfang
03 End of Text ETX Textende
04 End of Transmission EOT Übertragungsende
05 Enquiry ENQ Stationsanruf
06 Acknowledge ACK Bestätigung
07 Bell BEL Klingel
08 Backspace BS Rückwärtsschritt
09 HT Horizontal Tabulation
10 Line Feed LF Zeilenvorschub
11 Vertical Tabulation VT
12 Form Feed FF Formularvorschub, Schirm l”schen
13 Carrige Return CR Wagenrücklauf
14 Shift out SO Umschalten aus
15 Shift in SI Umschalten ein
16 Data Link Escape DLE Austritt aus der Datenverbindung
17 Device Control 1 DC1 Gerätesteuerung 1
18 Device Control 2 DC2 Gerätesteuerung 2
19 Device Control 3 DC3 Gerätesteuerung 3
20 Device Control 4 DC4 Gerätesteuerung 4
21 Negative Acknowledge NAK Fehlermeldung
22 Synchronous Idle SYN Synchronisierung
23 End of Transm.Block ETB Datenblockende
24 Cancel CAN ungültig
25 End of Medium EM Datenträgerende
26 Substitute SUB Character Zeichen ersetzen
27 Escape ESC Rücksprung
28 File Separator FS Filetrennung
29 Group Separator GS Gruppentrennung
30 Record Separator RS Untergruppentrennung
31 Unit Separator US Einheitentrennung
32 Space SP Leerschritt


Bei meinem Linux-System werden die ANSI-Steuercodes automatisch verarbeitet. Wie das bei Windows aussieht, keinen Ahnung, da ich seit 2012 auf Linux umgestiegen bin.

Wenn ANSI nicht bei Windows arbeitet, dann interpretiert das Terminal diese Steuerzeichen als normalen Character:blob.png


Siehe mal hier:

https://www.dostips.com/forum/viewtopic.php?t=9144

und

https://hackage.haskell.org/package/ansi-terminal

ok ich lasse no 3,

jetzt no 4 :

also no 4 ist so: ?
printf ("Hallo Welt\n");

so?Wenn ja dann wozu diese ( \)?

Eigentlich kann man das Fragezeichen auch so darstellen. Ich denke das es ein Relikt aus früheren Zeiten ist, wo man die Datenübertragung zwischen zwei Rechnern mit der Seriellen RS 232 Schnittstelle vorgenommen hat. So wurde das Fragezeichen eindeutig als ein solches gekennzeichnet und nicht wie hier bei einer Auswertung eines Ausdrucks:

max = (a > b) ? a : b;

Siehe Wikipedia

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community