diff options
author | zlg <zlg@zlg.space> | 2013-02-13 20:48:44 -0600 |
---|---|---|
committer | zlg <zlg@zlg.space> | 2013-02-13 20:48:44 -0600 |
commit | 5018e06c580dd21c958ec1672c26a3448faf0c55 (patch) | |
tree | cebbb56dad0a6b821cad3712c7977f6f9b0086ab /ch1/1-18_strip-blanks.c | |
parent | Fix 1-09's solution (diff) | |
download | knr-5018e06c580dd21c958ec1672c26a3448faf0c55.tar.gz knr-5018e06c580dd21c958ec1672c26a3448faf0c55.tar.bz2 knr-5018e06c580dd21c958ec1672c26a3448faf0c55.tar.xz knr-5018e06c580dd21c958ec1672c26a3448faf0c55.zip |
Add license file, reorganize project
Diffstat (limited to 'ch1/1-18_strip-blanks.c')
-rw-r--r-- | ch1/1-18_strip-blanks.c | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/ch1/1-18_strip-blanks.c b/ch1/1-18_strip-blanks.c new file mode 100644 index 0000000..c766445 --- /dev/null +++ b/ch1/1-18_strip-blanks.c @@ -0,0 +1,38 @@ +#include <stdio.h> + +#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); + } + } +} + |