Navigation

2.9 Beispiele

2.9.1 Textformatierung

Das folgende Progamm ermöglicht die Eingabe von Textzeilen. Die Anzahl der Zeichen pro Zeile soll höchstens 80 betragen. Sind mehr als 70 Zeichen, aber weniger als 80 Zeichen eingegeben worden, so soll die Zeile auf 80 Zeichen --mit Leerzeichen zwischen den Worten-- aufgefüllt werden.

BEISPIELE/b291.c: 

#include <stdio.h>

main()                            /* Textformatierung */
{
    char c, zeile[100];
    int l,k;
    void format(char *, int );

    printf("Eingabe Text 70 <= zeilenlaenge <= 80\n\n");
    while(1) {
        l=0;
        while((c=getchar()) != (char) EOF && l < 80 ) {
            zeile[l++]=c;
            if(c=='\n') break;
        }
        if(c == (char) EOF) break;
        if(l < 80 && l > 70) {
            format(zeile,80-l);
            l=80;
        }
        for(k=0;k<l;k++) printf("%c",zeile[k]);
    }
}
void format(char z[], int i)
{
    int y,v;
    void shift();
    while(i > 0) {
        y=0; v=0;
        while(z[y] != '\n') {
            if(z[y] == ' ') {
                v=1;
                shift(&z[y]);
                y++; i--;
                if(i == 0) return;
            }
            y++;
        }
        if(v==0) return;
    }
}
void shift(char *p)
{
    char *j;
    for(j = p; *j != '\n'; j++) ;
    for(; j != p; j--) *(j+1) = *j;
    *(j+1)=' ';
}

Navigation