練習1.18

編寫一個程序:刪除每個輸入行末尾的空格和製表符,並刪除完全是空格的行。

 

#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';
}


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章