#include <stdio.h> #include <string.h> #include <errno.h> #define BUF_SIZE 128 /* * 要求:处理一个字符串,删除字符串中多余的空格、' '和空行,并满足下列要求: * (1)对原字符串只能进行一次扫描。 * (2)不允许申请新的空间。(这个有点疑问,声明变量也会申请空间的。) * (3)处理后的字符串的首尾不能有空格、' '和空行。 * (4)如果原字符串中连续出现空格和' ',则处理后的字符串只需存储一个空格。 * (5)如果原字符串中连续出现空格、' '和空行,则处理后的字符串只需存储一个空行 * (对这个空行理解也不清楚是一个 ,还是两个 ?,字符串后两个 才会出一 * 个可见的空行,这个地方可能是 我以为)。 * * 这个题花了我两个小时,写了三遍。 * 总结: 1.对问题的理解很重要. * 2.把问题转换成合理的模型,可以减少许多工作. * 3.每个局部都正确,不代表整体有意义. * * 这个题的处理模型就是字符串拷贝。 * 但有条件.就是上面说的,转换成程序是这样的。。。。看代码吧, * 写的注释都多余. * * 关于 bug 为何不直接修正,因为我看人家都只给的函数。 */ /* * FIXME: 如果修正bug 的话,这里将会修改成 * ----------- * char remove_extra_space(char *str, int is_trim_header) * ----------- */ void remove_extra_space(char *str) { char *s = str; //代表生成的字符串,因为 s 多表示临时字符串。 char *prv = NULL; //代表上一个有效的字符.这个有效的是指...(你应该明白的) for(; prv==NULL ||*prv != '