Discussion:
ASCII-Zeichen 0x00 bis 0x1F anzeigen
(zu alt für eine Antwort)
Steffen Loley
2004-07-16 15:02:31 UTC
Permalink
Hallo,

wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.

Falls das unter ANSI-C nicht vorgesehen ist: Gibt es unter Windows eine
nicht-ANSI-C Möglichkeit? (Darf auch C++ sein. - Ich bin verzweifelt...)

Danke!
Claus Reibenstein
2004-07-16 15:49:12 UTC
Permalink
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
%d, %o, %x - such Dir was Passendes raus.
Post by Steffen Loley
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wenn Deine Maschine ASCII zur Zeichendarstellung nutzt, werden diese
drei Formatspezifikationen ASCII-Zeichen ausgeben, und zwar den
Zeichencode in dezimaler, oktaler oder hexadezimaler Form.
Post by Steffen Loley
Falls das unter ANSI-C nicht vorgesehen ist: Gibt es unter Windows eine
nicht-ANSI-C Möglichkeit? (Darf auch C++ sein. - Ich bin verzweifelt...)
Für Windows ist <news:de.comp.os.ms-windows.programming> zuständig, für
C++ <news:de.comp.lang.iso-c++>.

Gruß. Claus
Claudio Carobolante
2004-07-16 16:24:40 UTC
Permalink
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Was ist denn ein ASCII-Zeichen eines Zeilenumbruchs außer eben ein
Zeilenumbruch? Wenn es etwas anderes ist, warum bricht dann die Zeile um,
wenn ich das Zeichen an eine Konsole schicke?

Vielleicht denkst Du nochmal nach und schreibst dann, was Du eigendlich
machen willst. Vielleicht willst Du ja sowas:

unsigned char ch;
/* ... */
switch(ch)
{
case '\n': printf("Zeilenumbruch");
/*...*/
default: printf("%c", (int) ch);
}

cc
Kostka, Volkmar
2004-07-16 18:05:08 UTC
Permalink
Hallo,

"Claudio Carobolante" wrote ...
Post by Claudio Carobolante
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Was ist denn ein ASCII-Zeichen eines Zeilenumbruchs außer eben ein
Zeilenumbruch? Wenn es etwas anderes ist, warum bricht dann die Zeile um,
wenn ich das Zeichen an eine Konsole schicke?
Vielleicht denkst Du nochmal nach und schreibst dann, was Du eigendlich
unsigned char ch;
/* ... */
switch(ch)
{
case '\n': printf("Zeilenumbruch");
/*...*/
default: printf("%c", (int) ch);
}
Ich denke, der OT will die Graphikzeichen, die bei DOS auf den Positionen 0
bis 31 liegen/lagen, ausgeben.
Das wird wahrscheinlich unter Windows nur noch mit
"FillConsoleOutputCharacter" gehen.

MFG

Volkmar Kostka

fup2poster
Dirk Clemens
2004-07-16 19:31:09 UTC
Permalink
Post by Claudio Carobolante
default: printf("%c", (int) ch);
Kleine Optimierung gefällig: default: putchar(ch);

Lemmi
Dirk Clemens
2004-07-17 09:41:39 UTC
Permalink
Post by Dirk Clemens
Post by Claudio Carobolante
default: printf("%c", (int) ch);
Kleine Optimierung gefällig: default: putchar(ch);
Was mir gerade ein- bzw. auffällt:
Welche Ausgabe sollte die folgende Anweisung gemäß Standard liefern:
printf("1%c2\n",0);

hint: Null terminierte Zeichenkette

Lemmi
Horst Kraemer
2004-07-17 10:58:43 UTC
Permalink
Post by Dirk Clemens
Post by Dirk Clemens
Post by Claudio Carobolante
default: printf("%c", (int) ch);
Kleine Optimierung gefällig: default: putchar(ch);
printf("1%c2\n",0);
hint: Null terminierte Zeichenkette
Nix hint.

printf("1%c2\n",0);

ist nicht dasselbe wie

char buf[80];
sprintf(buf,"1%c2\n",0);
printf("%s",buf);

Der Standard sagt dazu, dass das geschrieben wird, was da steht.
--
Horst
Horst Kraemer
2004-07-16 23:27:14 UTC
Permalink
On Fri, 16 Jul 2004 17:02:31 +0200, Steffen Loley
Post by Steffen Loley
Hallo,
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
--
Horst
Dirk Clemens
2004-07-17 09:38:58 UTC
Permalink
Post by Horst Kraemer
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
Drucke es doch einfach aus ;)
Lemmi
Claus Reibenstein
2004-07-17 14:22:56 UTC
Permalink
Post by Horst Kraemer
On Fri, 16 Jul 2004 17:02:31 +0200, Steffen Loley
Zu lang.
Post by Horst Kraemer
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
Es "sieht" gar nicht "aus", weil es eines der nicht darstellbaren
ASCII-Zeichen ist. Es hat lediglich einen Effekt, der vom jeweiligen
Ausgabegerät abhängt (kein Effekt ist auch ein Effekt).

Gruß. Claus
Horst Kraemer
2004-07-17 16:00:42 UTC
Permalink
On Sat, 17 Jul 2004 16:22:56 +0200, Claus Reibenstein
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
Es "sieht" gar nicht "aus", weil es eines der nicht darstellbaren
ASCII-Zeichen ist. Es hat lediglich einen Effekt, der vom jeweiligen
Ausgabegerät abhängt (kein Effekt ist auch ein Effekt).
Gruß. Claus
Pardon, ich wollte eigentlich wissen, was der OP als "ASCII-Zeichen"
fuer 0x00 oder \n erwartet...
--
Horst
Claus Reibenstein
2004-07-17 16:25:47 UTC
Permalink
Post by Horst Kraemer
On Sat, 17 Jul 2004 16:22:56 +0200, Claus Reibenstein
Zu lang!
Post by Horst Kraemer
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
Es "sieht" gar nicht "aus", weil es eines der nicht darstellbaren
ASCII-Zeichen ist. Es hat lediglich einen Effekt, der vom jeweiligen
Ausgabegerät abhängt (kein Effekt ist auch ein Effekt).
Pardon, ich wollte eigentlich wissen, was der OP als "ASCII-Zeichen"
fuer 0x00 oder \n erwartet...
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.

Gruß. Claus
Horst Kraemer
2004-07-17 17:11:04 UTC
Permalink
On Sat, 17 Jul 2004 18:25:47 +0200, Claus Reibenstein
Post by Claus Reibenstein
Post by Horst Kraemer
On Sat, 17 Jul 2004 16:22:56 +0200, Claus Reibenstein
Zu lang!
Bin unbelehrbar.
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Steffen Loley
wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
der Zeilenumbruch interpretiert werden?
Die Steuerzeichen sollen als ASCII-Zeichen in meiner Konsole erscheinen.
Wie sieht das "ASCII-Zeichen" mit dem Code 0x00 aus ?
Es "sieht" gar nicht "aus", weil es eines der nicht darstellbaren
ASCII-Zeichen ist. Es hat lediglich einen Effekt, der vom jeweiligen
Ausgabegerät abhängt (kein Effekt ist auch ein Effekt).
Pardon, ich wollte eigentlich wissen, was der OP als "ASCII-Zeichen"
fuer 0x00 oder \n erwartet...
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???

Macht nichts, ich weiss es auch nicht ;-)
--
Horst
Claus Reibenstein
2004-07-17 18:49:09 UTC
Permalink
Post by Horst Kraemer
On Sat, 17 Jul 2004 18:25:47 +0200, Claus Reibenstein
Zu lang!
Post by Horst Kraemer
Post by Claus Reibenstein
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???
Nicht _die_, sondern _eine_ lesbare Darstellung. Ich habe in
<***@uni-berlin.de> bereits drei vorgeschlagen.

Aber bevor wir hier weiter rätseln, was Steffen denn nun gemeint haben
könnte, sollten wir vielleicht einfach mal abwarten, was er uns noch
dazu zu sagen hat.

Gruß. Claus
Steffen Loley
2004-07-20 11:55:35 UTC
Permalink
Hallo.
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Claus Reibenstein
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???
Nicht _die_, sondern _eine_ lesbare Darstellung. Ich habe in
Aber bevor wir hier weiter rätseln, was Steffen denn nun gemeint haben
könnte, sollten wir vielleicht einfach mal abwarten, was er uns noch
dazu zu sagen hat.
Für ein '\n' erwarte ich von meiner VGA-Grafikkarte eine Note - ich
glaube es ist sogar eine viertel Note, die erscheint, wenn der zum '\n'
gehörige Wert in den Text-Speicher meiner Grafikkarte kopiert wird.
Ich will einfach alles am Display ausgeben, ohne dass es vorher von
einer Routine - gehöre sie nun zu Ansi-C oder zum BIOS - verarbeitet und
irgendwie interpretiert wird.
Achim Peters
2004-07-20 12:02:24 UTC
Permalink
Steffen Loley wrote:

| wie kann ich unter C Zeichen ausgeben, ohne dass Steuerzeichen wie z.B.
| der Zeilenumbruch interpretiert werden?
Post by Steffen Loley
Für ein '\n' erwarte ich von meiner VGA-Grafikkarte eine Note - ich
glaube es ist sogar eine viertel Note, die erscheint, wenn der zum '\n'
gehörige Wert in den Text-Speicher meiner Grafikkarte kopiert wird.
Dann nimm memcpy.

Bye
Achim
Kostka, Volkmar
2004-07-20 12:08:27 UTC
Permalink
Hallo,
Post by Steffen Loley
Hallo.
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Claus Reibenstein
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???
Nicht _die_, sondern _eine_ lesbare Darstellung. Ich habe in
Aber bevor wir hier weiter rätseln, was Steffen denn nun gemeint haben
könnte, sollten wir vielleicht einfach mal abwarten, was er uns noch
dazu zu sagen hat.
Für ein '\n' erwarte ich von meiner VGA-Grafikkarte eine Note - ich
glaube es ist sogar eine viertel Note, die erscheint, wenn der zum '\n'
gehörige Wert in den Text-Speicher meiner Grafikkarte kopiert wird.
Ich will einfach alles am Display ausgeben, ohne dass es vorher von
einer Routine - gehöre sie nun zu Ansi-C oder zum BIOS - verarbeitet und
irgendwie interpretiert wird.
Liest mich hier keiner?
Habe schon vor ein paar Tagen geschrieben, dass das mit
"FillConsoleOutputCharacter" geht.

BOOL FillConsoleOutputCharacter(
HANDLE hConsoleOutput,
TCHAR cCharacter,
DWORD nLength,
COORD dwWriteCoord,
LPDWORD lpNumberOfCharsWritten
);

MFG

Volkmar Kostka
Kostka, Volkmar
2004-07-20 12:10:50 UTC
Permalink
Post by Steffen Loley
Hallo,
Post by Steffen Loley
Hallo.
Post by Claus Reibenstein
Post by Horst Kraemer
Post by Claus Reibenstein
Ich habe ihn dahingehend interpretiert, dass er eine lesbare Darstellung
haben wollte und sein System ASCII als Zeichensatz benutzt.
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???
Nicht _die_, sondern _eine_ lesbare Darstellung. Ich habe in
Aber bevor wir hier weiter rätseln, was Steffen denn nun gemeint haben
könnte, sollten wir vielleicht einfach mal abwarten, was er uns noch
dazu zu sagen hat.
Für ein '\n' erwarte ich von meiner VGA-Grafikkarte eine Note - ich
glaube es ist sogar eine viertel Note, die erscheint, wenn der zum
'\n' gehörige Wert in den Text-Speicher meiner Grafikkarte kopiert wird.
Ich will einfach alles am Display ausgeben, ohne dass es vorher von
einer Routine - gehöre sie nun zu Ansi-C oder zum BIOS - verarbeitet
und irgendwie interpretiert wird.
Liest mich hier keiner?
Habe schon vor ein paar Tagen geschrieben, dass das mit
"FillConsoleOutputCharacter" geht.
BOOL FillConsoleOutputCharacter(
HANDLE hConsoleOutput,
TCHAR cCharacter,
DWORD nLength,
COORD dwWriteCoord,
LPDWORD lpNumberOfCharsWritten
);
MFG
Volkmar Kostka
siehe auch:

BOOL WriteConsoleOutputCharacter(
HANDLE hConsoleOutput,
LPCTSTR lpCharacter,
DWORD nLength,
COORD dwWriteCoord,
LPDWORD lpNumberOfCharsWritten
);

BOOL WriteConsoleOutput(
HANDLE hConsoleOutput,
const CHAR_INFO* lpBuffer,
COORD dwBufferSize,
COORD dwBufferCoord,
PSMALL_RECT lpWriteRegion
);

BOOL SetConsoleOutputCP(
UINT wCodePageID
);

BOOL SetConsoleCP(
UINT wCodePageID
);

MFG

Volkmar Kostka
Steffen Loley
2004-07-20 12:20:01 UTC
Permalink
Hallo.
Post by Kostka, Volkmar
Post by Kostka, Volkmar
Liest mich hier keiner?
Habe schon vor ein paar Tagen geschrieben, dass das mit
"FillConsoleOutputCharacter" geht.
Wurde gelesen. Vielen Dank!

Ich bin allerdings doch ein bisschen neugierig, ob das auch mit den
ANSI-C-Funktionen geht.
Post by Kostka, Volkmar
Post by Kostka, Volkmar
BOOL FillConsoleOutputCharacter(
HANDLE hConsoleOutput,
TCHAR cCharacter,
DWORD nLength,
COORD dwWriteCoord,
LPDWORD lpNumberOfCharsWritten
);
MFG
Volkmar Kostka
BOOL WriteConsoleOutputCharacter(
HANDLE hConsoleOutput,
LPCTSTR lpCharacter,
DWORD nLength,
COORD dwWriteCoord,
LPDWORD lpNumberOfCharsWritten
);
BOOL WriteConsoleOutput(
HANDLE hConsoleOutput,
const CHAR_INFO* lpBuffer,
COORD dwBufferSize,
COORD dwBufferCoord,
PSMALL_RECT lpWriteRegion
);
BOOL SetConsoleOutputCP(
UINT wCodePageID
);
BOOL SetConsoleCP(
UINT wCodePageID
);
MFG
Volkmar Kostka
Kostka, Volkmar
2004-07-20 12:33:42 UTC
Permalink
Post by Steffen Loley
Hallo.
Post by Kostka, Volkmar
Liest mich hier keiner?
Habe schon vor ein paar Tagen geschrieben, dass das mit
"FillConsoleOutputCharacter" geht.
Wurde gelesen. Vielen Dank!
Ich bin allerdings doch ein bisschen neugierig, ob das auch mit den
ANSI-C-Funktionen geht.
Unter Windows?
Ich denke nicht, da jede Ausgabe ueber die Standardausgabestreams durch
das Konsolensubsystem geht. Und das interpretiert die durchlaufenden
Zeichen. Bei der direkten Verwendung der Konsolenfunktionen werden die
Daten nicht interpretiert, sondern einfach in den Ausgabebereich
geschrieben.

MFG

Volkmar Kostka

Thomas Rachel
2004-07-18 05:58:13 UTC
Permalink
Post by Horst Kraemer
Ja. Und was ist dann die "lesbare" lt. OP *nicht interpretierte*
ASCII-Darstellung von \n ???
Auch wenn es hier OT ist - es gibt da durchaus Tabelle, die sowas
auflisten. Allerdings muß ich gestehen, daß ich es selbst jetzt nicht
auswendig weiß.

Ainnvoller dürfte hier aber entweder die Ausgabe als Hexzahl oder als
dreibuchstabiger Code (BEL, NUL, ...) sein.


Thomas
--
[...] Weiterhin zerstören die Stammschreiber der Newsgroup
de.talk.jugend das Usenet: Sie beleidigen angesehene Personen wie Lutz
Donnerhacke oder Ralph Babel, [...]
Robert Köhler <***@gmx.de>
Lesen Sie weiter auf narkive:
Suchergebnisse für 'ASCII-Zeichen 0x00 bis 0x1F anzeigen' (Fragen und Antworten)
3
Antworten
MSN LIVE Messenger funktioniert nicht mehr?
gestartet 2007-09-16 04:18:09 UTC
msn
Loading...