В упражнении запрашивается программа, которая удаляет конечные пробелы и вкладки, а также удаляет полностью пустые строки. Моя программа удаляет пустые строки, если ввод \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';
}