/* 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;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
C - The C Answer (2nd Edition) - Exercise 1-18
原文地址:http://blog.csdn.net/troubleshooter/article/details/47091779