1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行

发布时间 2023-07-15 16:32:38作者: 语巫

Archlinux

GCC 13.1.1  20230429

2023-07-15 16:24:47 星期六

 


点击查看代码
#include <stdio.h>
#include <string.h>

#define MAX_LINE_LENGTH 1000

int getline_n(char line[], int maxline);
void remove_space(char line[]);

int main() {
    char line[MAX_LINE_LENGTH];
    int len;

    while ((len = getline_n(line, MAX_LINE_LENGTH)) > 0) {
        remove_space(line);
        if (strlen(line) > 0) {
            printf("%s", line);
        }
    }

    return 0;
}

int getline_n(char line[], int maxline) {
    int c, i;

    for (i = 0; i < maxline - 1 && (c = getchar()) != EOF && c != '\n'; ++i) {
        line[i] = c;
    }

    if (c == '\n') {
        line[i] = c;
        ++i;
    }

    line[i] = '\0';

    return i;
}

void remove_space(char line[]) {
    int i = strlen(line) - 1;

    while (i >= 0 && (line[i] == ' ' || line[i] == '\t' || line[i] == '\n')) {
        line[i] = '\0';
        --i;
    }
}

 


运行截图:

image
image

输出正确。

 


小白刚学习C语言,代码质量不高,欢迎评论。