Ausgabe des ASCII-Codes



  • Hallo,

    ich soo ein Programm schreiben, dass den ASCII-Code in einer Datei speichert, anschliessend aus der Datei liest und auf dem Bildschirm schreibt und danach auf den Drucker ausgibt.

    Die Variable, die den ASCII-Code kontrolliert soll Ordnungszahl heissen, die die Zeichen aus der Datei aufnimmt soll ascii heissen. Die Variable, die die Zeilenzahl prueft muss zeilenzahl heissen.

    Wozu ich noch Laufvariablen mit Buchstaben ab i verwenden soll ist mir unklar.

    Bei meinem Entwurf funktioniert alles ganz gut. Allerdings wird die erste Zeile auf dem Bildschirm nicht korrekt wiedergegeben. Das Ausrufezeichen steht unter der Ordnungszahl 32 und nicht unter der 33, d. h. in der ersten Zeile sind die Zeichen um eine Stelle verschoben. Wenn ich die erzeugte Datei in einem Texteditor oeffne wird alles korrekt wiedergegeben. Wo liegt mein Fehler?

    Meine Ausgabe auf dem Drucker funktioniert ueberhaupt nicht. Was mache ich falsch?

    Vielen Dank fuer Eure Hinweise.

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    void main(void)
    {
    int ascii;
    int ordnungszahl, zeilenzahl;
    FILE *au_kan, *ei_kan;

    if ((au_kan = fopen("SATZ.TXT","w")) == 0)
    {
    fputs("\nFehler beim Schreiben in die Datei!\n", stderr);
    getch();
    exit(1);
    }
    else
    {
    for (zeilenzahl = 2; zeilenzahl <= 15; zeilenzahl++)
    {
    for (ordnungszahl = zeilenzahl * 16;
    ordnungszahl <= zeilenzahl * 16 + 15; ordnungszahl++)
    {
    fprintf(au_kan,"%4d",ordnungszahl);
    }
    fprintf(au_kan,"\n");
    for (ascii = zeilenzahl * 16;
    ascii <= zeilenzahl * 16 + 15; ascii++)
    {
    fprintf(au_kan," %c",ascii);
    }
    fprintf(au_kan,"\n\n");
    };
    fclose(au_kan);
    }
    //
    /* Lesen aus der Datei und schreiben auf den Bildschirm */
    /
    /

    if ((ei_kan = fopen("SATZ.TXT","r")) == 0)
    {
    fputs("\nFehler beim Lesen aus der Datei!\n", stderr);
    getch();
    exit(1);
    }
    else
    {
    clrscr();
    printf("\n");

    for (zeilenzahl = 2; zeilenzahl <= 15; zeilenzahl++)
    {
    for (ordnungszahl = zeilenzahl * 16;
    ordnungszahl <= zeilenzahl * 16 + 15;
    ordnungszahl++)
    {
    if (ordnungszahl == 16 * 9)
    {
    getch();
    clrscr();
    printf("\n");
    };
    fscanf(ei_kan, "%4d", &ordnungszahl);
    printf("%4d", ordnungszahl);
    };
    printf("\n");
    for (ascii = zeilenzahl * 16;
    ascii <= zeilenzahl * 16 + 15;
    ascii++)
    {
    fscanf(ei_kan, " %c", &ascii);
    printf(" %c", ascii);
    }
    printf("\n\n");
    }
    getch();
    fclose(ei_kan);
    };

    /*/
    /* Lesen aus der Datei und ausgeben auf den Drucker. /
    /
    /

    if ((ei_kan = fopen("SATZ.TXT","r")) == 0)
    {
    fputs("\nFehler beim Lesen aus der Datei!\n", stderr);
    getch();
    exit(1);
    }
    else
    {
    for (zeilenzahl = 2; zeilenzahl <= 15; zeilenzahl++)
    {
    for (ordnungszahl = zeilenzahl * 16;
    ordnungszahl <= zeilenzahl * 16 + 15;
    ordnungszahl++)
    {
    fscanf(ei_kan, "%4d", &ordnungszahl);
    fprintf(stdprn,"%4d", ordnungszahl);
    };
    if (ordnungszahl == 10)
    fprintf(stdprn,"13"); /* Zeilenumbruch = \n /
    for (ascii = zeilenzahl * 16;
    ascii <= zeilenzahl * 16 + 15;
    ascii++)
    {
    fscanf(ei_kan, " %c", &ascii);
    fprintf(stdprn," %c", ascii);
    }
    if (ascii == 10)
    fprintf(stdprn,"13"); /
    Zeilenumbruch = \n /
    }
    getch();
    fclose(ei_kan);
    fprintf(stdprn,"%x", 12); /
    Seitenvorschub = Steuercode 12 */
    };
    }



  • hey wenn du es noch nicht selbst rausgefunden hast

    wenn du

    fprintf(au_kan," %c",ascii);

    so

    fprintf(au_kan,"%4c",ascii);

    schreibst mueste es richtig ausgegeben werden.


Anmelden zum Antworten