C: Ascii-Tabelle ausgeben

Hi Leute.

Ich beginne zur Zeit mit der C-Programmierung beschäftigt und noch am Anfang der ganzen Geschichte. Meine heutige Aufgabe ist es eine ASCII-Tabelle auszugeben.
Es sollen die nicht druckbaren Zeichen von 0 bis 31 und die 127 als "???" ausgegeben werden, die restlichen Zeichen ganz normal.

Mit dem folgenden Code habe ich es auch hin bekommen:

Code:
#include <stdio.h>

    int main (void){
 
    int i;
    

    for (i=0; i<128; i++) { 
       if(i<32 || i==127) 
          printf("??? ");
       if(i>=32)
          printf(" %c ", i);
       if(i % 16 == 15)
         printf("\n");
    }
  return 0;
}

Meine eigentliche Frage ist nun,

Gibt es eine Möglichkeit, dass die ASCII Tabelle automatisch "???", oder einen anderen Platzhalter, ausgibt bei den nicht druckbaren Werten? Sprich, dass das Programm selbst erkennt, das es sich um ein nicht druckbares Zeichen handelt?
Im Moment sage ich dem Programm ja, es soll ??? ausgeben bei den jeweiligen Werten.

Liebe Grüße
Kev
 
Code:
%d

Edit: Uppala, so zu schnell gelesen. Habe ich dich richtig verstanden, dass du z.B. 06 als "ACK" oder als "^F" ausgeben lassen willst? Um das zu überprüfen gibts übrigens isprint bzw. iscntrl (0-32) aus ctypes. Für die non-printable Chars gibts afaik keinen Ausgabestandard, weswegen du beispielsweise auf Alt Codes zurückgreifen müsstest.
 
Zuletzt bearbeitet:
Ne ich will die nicht Anzeigen lassen, also die non-printable chars.

Meine Ausgabe soll so aussehen (und tut sie auch in der Konsole):

Code:
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? 
??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ???
 !  "  #  $  %  &  '  (  )  *  +  ´  -  .  /  0  
 1  2  3  4  5  6  7  8  9  :  ;  <  =  >  ?  @
A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P
Q  E  S  T  U  V  W  X  Y  Z  [  \  ]  ^  _  `
a  b  c  d  e  f  g  h  i  j  k  l  m  n  o  p
q  r  s  t  u  v  w  x  y  z  {  |  }  ~  ???
Sprich, die non-printable chars sollen als 3 Fragezeichen dargestellt werden. Im Moment macht es das ja, da ich ja via
Code:
(i <=31 || i ==127)
abfrage und dann sage, das diese Werte als Fragezeichen dargestellt werden sollen.

Meine Frage war jetzt, ob man sich diese Abfrage auch irgendwie sparen kann und es einen Befehl gibt, dass C die non-printable chars automatisch so als Fragezeichen (oder einen anderen Platzhalter) darstellt.

Bei den printable chars funktioniert es ja auch ganz easy mit der
Code:
 printf(" %c ", i);
Eingabe
 
Meine Frage war jetzt, ob man sich diese Abfrage auch irgendwie sparen kann und es einen Befehl gibt,
SB hat gesagt.:

siehe auch
man isprint hat gesagt.:
DESCRIPTION
The isprint() function tests for any printing character, including space
(‘ ’). The value of the argument must be representable as an unsigned
char or the value of EOF.
RETURN VALUES
The isprint() function returns zero if the character tests false and
returns non-zero if the character tests true.
Code:
#include <ctype.h>
...
isprint(i) ? printf(" %c ",i) : printf(" ??? ");
 
Zurück
Oben