Удовлетворяет ли эта небольшая программа на C упражнению K & R?

Я приступаю к Упражнению K & R 1-18

Напишите программу для удаления конечных пробелов и вкладок из каждой строки ввода и удалить полностью пустые строки.

Это то, что я Мы дошли до этого

#include <stdio.h>

#define MAXLINE 1000

int getline(char line[], int maxline);
void copy(char to[], char from[]);

int main () {

    int len;
    char line[MAXLINE];

    while (getline(line, MAXLINE) > 0) {
            printf("%s", line);
    }
    return 0;
}


int getline(char s[], int lim) {
    int c, i, lastNonBlankIndex;
    lastNonBlankIndex = 0;

    for (i=0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {

        if (c != ' ' && c != '\t') {
            lastNonBlankIndex = i + 1;

        } 

        s[i] = c;
    }

    if (i != lastNonBlankIndex) {
        i = lastNonBlankIndex;
        c = '\n';
    }

    if (c == '\n') {
        s[i] = c;   
        ++i;
    }
    s[i] = '\0';
    return i;
}

Вторая часть звучала жестко, так как я не был уверен, что я должен вернуть, если в строке есть только пробелы или табуляции. В конце концов, если я верну 0, это остановит вызов getline () . Будет ли это где я должен установить #define , например ALL_BLANKS .

В любом случае, к актуальному основному вопросу, это правильный способ удалить конечные пробелы и вкладки из линии? Я пропустил несколько входов, и он , казалось, работал. Тем не менее, если я скопирую и вставлю текст с символами новой строки в CL, он все будет соединен. И когда я набираю строку в CL и нажимаю ввод, она автоматически печатает ее. Должен ли я строить массив строк, а затем перебирая и печатая их, когда закончите?

5
задан Deduplicator 23 January 2015 в 11:22
поделиться