C練習--刪除每個輸入行末尾空格及製表符,並刪除完全是空的行

saksinariot發表於2020-12-10

題目:編寫一個程式,刪除每個輸入行末尾空格及製表符,並刪除完全是空的行

#include <stdio.h>

#define MAXLINE 1000

int get_line(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;
            ++j;
        }
        if(c == '\n')
        {
            s[j] = c;
            ++j;
            ++i;
        }
        s[j] = '\0';
        return i;
    }
}

int remove(char s)
{
    int i = 0;

    //空行不計數
    while(s[i] != '\n')
        i = i + 1;
    i = i - 1;

    while(i >= 0 && (s[i] == ' ' || s[i] == '\t'))
        i = i - 1;

    if(i >= 0)
    {
        i = i+1;
        s[i] = '\n';
        i = i+1;
        s[i] = '\0';
    }
    return i;
}

int main(void)
{
    char line[MAXLINE];
    while(get_line(line,MAXLINE) > 0)
        if(remove(line) > 0)
            printf("%s", line);
    
    return 0;
}

相關文章