Anfängerfrage ASCII-Table
-
Hallo Leute,
was mache ich hier falsch, warum wird mir das 0, 1, ... e, f. Hier doppelt angezeigt? Bitte um Korrektur mit Erklärung.
#include <stdio.h> #include <stdlib.h> #include <ctype.h> int main (void){ int i, j=0, k=0, l=0; printf (" "); for (i=0; i<=15; i++){ printf ("%x ", i); } printf ("\n"); for (j=0; j<=255; j++){ if (k%17!=0){ if (!iscntrl(j)){ printf ("%c ", j); } else {printf ("? "); } } else { printf ("\n %x ", l); } k++; l++; } getchar(); }Danke und liebe Grüsse
Coolbininet
-
Sobald die zweite Reihe ausgegebn wird ist die Variable L 18 bzw. 11h, deswegen gibt er auch 11 aus.

Du musst L an einer früheren stelle erhöhen, nämlich an der Ausgabe der des Hex.}else{ printf ("\n %1x ", l); l++; }Ach ja, gewöhn dir ++l an, das ist schneller.

-
Coolbininet schrieb:
if (k%17!=0)das muß if(k%16!=0) heißen.
-
Wie nennt man diese Art von Code Gliederung?
Gewöhn dir mal eine übersichtliche schreibweise an.
K&R Style:
#include <cstdio> #include <cstdlib> #include <cctype> int main () { int i, j=0, k=0, l=0; printf (" "); for (i=0; i<=15; i++) printf ("%x ", i); printf ("\n"); for (j=0; j<=255; j++) { if (k%17!=0) { if (!iscntrl(j)) { printf ("%c ", j); } else printf ("? "); } else printf ("\n %x ", l); k++; l++; } getchar(); }
-
wtf
-
effe_eichelt schrieb:
Ach ja, gewöhn dir ++l an, das ist schneller.

Für POD's, wie in diesem Fall, macht das keinen Unterschied, sonst schon.