From 3672d30458406a62f5d3e3e51547e37e09515dea Mon Sep 17 00:00:00 2001 From: zlg Date: Sat, 11 Aug 2012 19:46:16 -0400 Subject: Solve exercise 1.18 --- 1-18_strip-blanks.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 1-18_strip-blanks.c (limited to '1-18_strip-blanks.c') diff --git a/1-18_strip-blanks.c b/1-18_strip-blanks.c new file mode 100644 index 0000000..c766445 --- /dev/null +++ b/1-18_strip-blanks.c @@ -0,0 +1,38 @@ +#include + +#define MAXLINELENGTH 9001 +/* Write a program to remove trailing blanks and tabs from each line of input, + and to delete entirely blank lines. */ + +int get_line(char s[], int lim) { + int c, i; + + for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++i) { + s[i] = c; + } + if (c == '\n') { + s[i] = c; + ++i; + } + s[i + 1] = '\0'; + return i; +} + +int main(void) { + char buffer[MAXLINELENGTH]; + int c, i, len; + + /* Make sure every line is gone over */ + while (len = get_line(buffer, MAXLINELENGTH)) { + /* An empty for statement, simply to change the i variable. */ + for (i = len - 2; (i > 0) && (buffer[i] == ' ') || (buffer[i] == '\t'); --i); + + /* We've reached the end of the line's actual content. Terminate the line. */ + if (i >= 1) { + buffer[i + 1] = '\n'; + buffer[i + 2] = '\0'; + printf("%s", buffer); + } + } +} + -- cgit v1.2.3-54-g00ecf