/* Write a program to remove trailing blanks and tabs from each line of input, and to delete entirely blank lines. */ #include <stdio.h> #define MAXLINE 1000 /* maximum input line size */ int getline(char line[], int maxline); int remove(char s[]); /* remove trailing blanks and tabs, and delete blank lines */ main() { char line[MAXLINE]; /* current input line */ while((getline(line, MAXLINE)) > 0) { if(remove(line) > 0) { printf("%s", line); } } return 0; } /* getline: read a line into s, return length */ int getline(char s[], int lim) { int c, i, j; j = 0; for(i = 0; (c = getchar()) != EOF && c != '\n'; ++i) { if(i < lim - 2) { s[j] = c; /* line still in boundaries */ ++j; } } if(c == '\n') { s[j] = c; ++j; ++i; } s[j] = '\0'; return i; } /* remove trailing blanks and tabs from character string s */ int remove(char s[]) { int i; i = 0; while(s[i] != '\n') /* find newline character */ { ++i; } --i; /* back off from '\n' */ while(i >= 0 && (s[i] == ' ' || s[i] == '\t')) { --i; } if(i >= 0) /* is it a non-blank line? */ { ++i; s[i] = '\n'; /* put newline character back */ ++i; s[i] = '\0'; /* terminate the string */ } return i; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-12-28 16:15:21