编程练习如题
解决思路:用fgets读入完整的一行,从字符串末尾进行字符判断,直至第一个不是space(默认space指’ ‘,’\t’, ‘\n’)的字符结束。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define BUFFSIZE 4096
int main(void)
{
FILE *fin, *fout;
fin = fopen("exercise1-18.in", "rb");
fout = fopen("exercise1-18.out", "wb");
char buf[BUFFSIZE];
int i, len;
while ((fgets(buf, BUFFSIZE, fin)) != NULL) {
len = strlen(buf);
for (i = len - 2; i >= 0; i --) { //最后一个字符是换行符 字符数组下标从0开始
if (!isspace(buf[len - 2])) //行末没有空格时直接跳出循环
break;
else if (isspace(buf[i]) && !isspace(buf[i - 1])) {
buf[i] = '\0';
break;
}
}
fputs(buf, fout);
if(i != 0)
fputc('\n', fout);
}
fclose(fin);
fclose(fout);
return 0;
}
本文介绍了一个使用C语言实现的程序,该程序能够从输入文件中读取每一行,并移除每行结尾处的空白字符(包括空格、制表符和换行符)。通过对字符串的逆向遍历,程序确保只保留非空白字符。

5074

被折叠的 条评论
为什么被折叠?



