Ascii code tabelle ausgeben C



  • sO bin jetzt alles durchgegangen jetzt sind nur noch die ascii's plötzlich vertauscht -.- was ist jetzt falsch

    #include <stdio.h>
    
    int main()
    {
        int sterne      =0,
            zahlenzeile =0,
            spalten     =0;
        float zeilenh   =0;
        int ascii       =0,
            anzahl      =0;
        printf("     *");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            if(zahlenzeile<=9 && zahlenzeile >0)
                printf("  %d", zahlenzeile);
            else
            printf(" %d", zahlenzeile);
        }
        printf("\n");
        for(sterne=0; sterne<=64; sterne++){
            printf("*");}
        printf("\n");
    
        for(spalten=0; spalten<=255; spalten++)
        {
            zeilenh=spalten%20;
            if(zeilenh == 0)
            {
                printf(" %3d *", spalten);
            }
            else {
                ascii++;
                if(ascii >= 32 && anzahl <= 19)
                {
                    printf(" %c ", ascii);
                }
                else if(ascii < 32 && anzahl <= 19)
                {
                    printf("   ");
                }
            if(zeilenh == 19)
    
                printf("\n");
            }
    
        }
        return 0;
    }
    


  • Wofür ist denn jetzt anzahl wieder?

    Du weißt wofür "%3d" bei printf steht?
    Dann benutze es auch bei zahlenzeile.

    Achso: das ascii++ muss aus dem else zweig raus.
    Oder schreib gleich ascii = spalten.



  • Hello World schrieb:

    sO bin jetzt alles durchgegangen jetzt sind nur noch die ascii's plötzlich vertauscht -.- was ist jetzt falsch

    Ich glaub's ja nicht. Wie viele Punkte bist du durchgegangen? Einen halben?



  • Das steigt ja keiner mehr durch.

    #include <stdio.h>
    #include <ctype.h>  /* fuer isprint */
    
    #if 1      /* 1 fuer Dezimal, 0 fuer Hexadezimalzahlen */
      #define FRM ".1d"
    #else
      #define FRM ".2X"
    #endif
    
    int main()
    {
        int z, anz_spalten = 16;
        int von = 0, bis = 127;
    
        printf(" %3c *", '+');                        /* Spaltennummerierung */
        for(z = 0; z < anz_spalten ;z++)
          printf("%3"FRM, z);
        printf("\n");
    
        for(z = 0; z < (3*anz_spalten+6); z++)        /* Trennlinie */
          printf("*");
        printf("\n");
    
        for(z = von; z <= bis; z++)
        {
          if((z-von) % anz_spalten == 0)              /* erstes Zeichen in der Zeile ? */
            printf(" %3"FRM" *", z);                  /* Zeilennummern */
    
    //    printf("%3c", (z>=' ') ? z: ' ');           /* Zeichen */
          printf("%3c", isprint(z) ? z: ' ');         /* Besser da ASCII nur bis 127 geht */
    
          if((z-von) % anz_spalten == anz_spalten-1)  /* letztes Zeichen in der Zeile ? */
            printf("\n");                             /* Zeilenende */
    
        }
        return 0;
    }
    


  • wxSkip schrieb:

    Ich glaub's ja nicht. Wie viele Punkte bist du durchgegangen? Einen halben?

    😃 😃 😃
    Ich werf mich weg...



  • ASCII-Tabelle schrieb:

    Das steigt ja keiner mehr durch.

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)



  • wxSkip schrieb:

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)

    Naja, wenn der TO das im Quelltext anpasst, hat er ja noch was Eigenes gemacht. 🙂



  • DirkB schrieb:

    wxSkip schrieb:

    Erstens das und zweitens entspricht das nicht den Voraussetzungen. (nur 16 statt 20 Spalten, nur bis 127)

    Naja, wenn der TO das im Quelltext anpasst, hat er ja noch was Eigenes gemacht. 🙂

    Was sollen eigentlich die Defines?



  • SO nach langem übergehen meines Codes und das durchgehen euer Comment's hab ichs jetzt (hatte auch etwas Hilfe von einem Freund)

    #include <stdio.h>
    
    int main()
    {
        int sterne      =0, //Zählervariable für die Sternenreihe
            zahlenzeile =0, //Zählervariable für die Zahlenzeile
            zeilenh     =0, //Zählervariable für den Zeilenumbruch
            spalten     =0, //Zählervariable für die Spalten
            ascii       =0; //Zählervariable für die Ausgabe der
                            //ASCII-Codes
    
        printf("\nASCII-Code Tabelle\n\n");
    
        //Ausgabe der Zahlenzeile
        printf("     * ");
        for(zahlenzeile=0; zahlenzeile<=19;zahlenzeile++){
            if(zahlenzeile<=9 && zahlenzeile >0)
                printf("  %d", zahlenzeile);
            else
            printf(" %d", zahlenzeile);
        }
    
        printf("\n"); //Zeilenumbruch
        //Ausgabe der Sternenzeile
        for(sterne=0; sterne<=65; sterne++)
            printf("*");
    
        printf("\n"); //Zeilenumbruch
    
        //Ausgabe der ASCII-Codes
            for(spalten=0; spalten <= 255; spalten += 20)
            {
                printf(" %3d *", spalten); //Ausgabe Der Zeilennummern
                    for(zeilenh = 0; zeilenh < 20; zeilenh++)
                    {
                        //Berechnung der ASCII's
                        ascii = spalten + zeilenh;
                        //Ausgabe aller ASCII's über 32
                        if(ascii < 32 || ascii > 255)
                        {
                            printf("   ");
                        }
                        else
                        {
                            printf("%3c",ascii);
                        }
                    }
                printf("\n");
            }
        return 0;
    }
    


  • Nein, es stimmt immer noch nicht ganz... Vor der Spalte 0 ist eine Leerzeile zu viel.



  • Aber es funktioniert =)))



  • Na schön, dann hier meine Lösung aus den letzten 8 Minuten:

    #include <stdio.h>
    
    int main()
    {
        printf("ASCII-Code Tabelle\n\n     *");
        for(int headline_num = 0; headline_num <= 19; ++headline_num) printf("%2d ", headline_num);
        printf("\n");
    
        for(int stars = 0; stars <= 65; ++stars) putc('*');
    
        for(int ascii = 0; ascii <= 255; ++ascii)
        {
            if(ascii % 20 == 0) printf("\n %3d *", ascii);
    
            printf(" %c ", ascii < 32 ? ' ' : (char)ascii);
        }
    }
    


  • Wow ... gut so professionel haben wir das noch nicht gelernt aber trotzdem ... RESPEKT 🙂 👍



  • Hello World schrieb:

    Wow ... gut so professionel haben wir das noch nicht gelernt aber trotzdem ... RESPEKT 🙂 👍

    Was ist daran professionell?



  • Alles du hast es viel efizienter gemacht als ich z.B. mit dem speichern der Variablen



  • Hello World schrieb:

    Alles du hast es viel efizienter gemacht als ich z.B. mit dem speichern der Variablen

    Nun gut, wenn Einfachheit auch zur Professionalität gehört 😃



  • Nun gut, wenn Einfachheit auch zur Professionalität gehört 😃

    Find ich schon 😛


Anmelden zum Antworten