编写一个程序:删除每个输入行末尾的空格和制表符,并删除完全是空格的行。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXLINE 1024
char *delStrLastBlank(char *line);
//删除这个行字符串末尾的空格和制表符
_Bool isAllSpace(char *line);
//判断这个行字符串是不是全部由空格构成
void delEnterLastBlank(char *line);
//删除一行最末的换行符(如果有换行符)
int main(int argc, char *argv[])
{
char line[MAXLINE] = "";
while (fgets(line, MAXLINE-1, stdin) != NULL) {
delEnterLastBlank(line);
if (isAllSpace(line)) continue;
delStrLastBlank(line);
printf("%s", line);
}
return 0;
}
_Bool isAllSpace(char *line)
{
for (size_t i = 0; line[i] != '\0'; ++i)
if (line[i] != ' ') return 0;
return 1;
}
char *delStrLastBlank(char *line)
{
size_t i = strlen(line)-1;
while (i != -1 && (line[i] == ' ' || line[i] == '\t'))
--i;
line[i+1] = '\0';
return line;
}
void delEnterLastBlank(char *line)
{
size_t i = strlen(line)-1;
if ('\n' == line[i]) line[i] = '\0';
}