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.


Anmelden zum Antworten