编程练习如题
解决思路:用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;
}