Я приступаю к Упражнению 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 и нажимаю ввод, она автоматически печатает ее. Должен ли я строить массив строк, а затем перебирая и печатая их, когда закончите?