zadanie z książki Język ANSI C

0

Witam mam prośbę odnośnie oceny programu do zadania 1.18 z książki "Język ANSI C"
Generalnie chodzi mi o to czy program jest przejrzysty, zrozumiały, poprawny i czy jest to dobry styl programowania i poprawne myślenie algorytmiczne.
Cała idea opiera się na tym, że wczytujemy znaki do tablicy do momentu znaku nowego wiersza lub przepełnienia tablicy
Jeśli nastąpi któreś z tych zdarzeń, to sprawdzamy czy wczytywaliśmy białe znaki jeśli tak, to opuszczamy je i znak końca tablicy umieszczamy za ostatnim poprawnym znakiem.

poniżej kod źródłowy funkcji getline, która realizuje to zadanie.

int getline(char line[],int mx)
{
int i,c,lbznakow;
int stan;

    lbznakow = 0;
    stan = OUT;
    for(i=0;i<mx-1&&(c=getchar())!=EOF&&c!='\n';i++)
    {
            if(c!=' ' && c!='\t')
            {
                    lbznakow = 0;
                    stan = IN;
            }
            if(c==' '||c=='\t')
            {
                    lbznakow++;
                    stan = OUT;
            }
            line[i]=c;
    }
    if(i==mx-1)
    {
            fflush(stdin);
            if(stan==OUT)
            {
                    if(i==lbznakow)
                    {
                            line[i-lbznakow]=c;
                            i = i-lbznakow;
                            i++;
                    }
                    else
                    {
                            line[i-lbznakow]=c;
                            i=i-lbznakow;
                    }
            }

    }
    if(c=='\n')
    {
            if(stan==OUT)
            {
                    line[i-lbznakow]=c;
                    i=i-lbznakow;
            }
            if(stan == IN)
            {
                    line[i] = c;
            }
            i++;
    }
    line[i]='\0';

return i;
}

Test czy wiersz jest pusty(biały) czy nie zrealizowane jest w funkcji głównej programu. Kod źródłowy poniżej

while((len=getline(wiersz,MAXLINE))>0)
{
if(len==1&&(wiersz[len-1]=='\n'||wiersz[len-1]=='\t'||wiersz[len-1]==' '))
printf("Wiersz pusty\n");
else
printf("%s",wiersz);
}

0

Proszę o usunięcie tego posta Dodałem otagowanie kodu źródłowego w nowym wątku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1