Проблема в удалении пустых строк в упражнении 1-18 (K & R) - PullRequest
0 голосов
/ 10 апреля 2020

В упражнении запрашивается программа, которая удаляет конечные пробелы и вкладки, а также удаляет полностью пустые строки. Моя программа удаляет пустые строки, если ввод \n, однако я не понимаю, почему она не удаляет их для ввода с пробелами или табуляциями до \n, например \t\n. Вот функция, которая «очищает» строки ввода и копирует их в вывод:

void clean(char to[], char from[]) 
{
    char storage[MAXLINE];
    int i, c, k;
    i = 0;
    c = 0;

    while (to[i] != '\0') {
        ++i;
    }

    for (k = 0; from[k] != '\0' && i < (MAXCHAR * MAXLINE - 1); ++k) {
        if (from[k] == (' ' || '\t')) {
            storage[c] = from[k];                               //The array storage[] will store me the trailing blanks and tabs
            ++c;
        }
        else if (from[k] == '\n' && to[i] == '\0') {            //If there is a blank line, do not copy into output
            ;
        }
        else {
            storage[c] = '\0';
            for (c = 0; storage[c] != '\0'; ++c) {
                to[i] = storage[c];                             //If there is a character after blanks/tabs, copy storage into output
                ++i;
            }
            to[i] = from[k];                                    //Copy the character
            ++i;
            c = 0;
        }
    }
    to[i] = '\0';
}
...