去除字符串中单词的多余空格
2014-08-24 10:28
225 查看
题目很水,我想代码应该就是最好的注释,实现如下:
/************************************************************************* > File Name: trim_space.c > Author: KrisChou > Mail:zhoujx0219@163.com > Created Time: Sun 24 Aug 2014 10:03:33 AM CST ************************************************************************/ #include <stdio.h> #include <stdlib.h> #include <string.h> #define N 128 static int my_isspace(char c) { if(c == ' ' || c == '\n' || c == '\t' || c == '\v') return 1; else return 0; } static void trim_space(char *line) { int pre, work_index; pre = -1; work_index = 0; while(line[work_index] != '\0') { if(!my_isspace(line[work_index])) { line[++pre] = line[work_index++]; }else if(pre != -1 && !my_isspace(line[pre])) { line[++pre] = line[work_index++]; }else { work_index++; } } line[++pre] = '\0'; } int main(int argc, char *argv[]) { char line ; memset(line,0,N); while(fflush(stdin),gets(line)!= NULL) { trim_space(line); puts(line); } return 0; } /* 关于输入输出的问题此处再强调一次,gets不会存储‘\n’,并将最后一个‘\n’换成‘\0’存储。 * puts会将‘\0’变成‘\n’输出。 * gets是一个不安全函数,会输出直至遇到‘\0’为止。 * fgets会存储‘\n’,fputs输出时不会将‘\0’变成‘\n’ */
注意
由于有人反应不理解,此处再解释下。实际上此去空格方法与快速排序的partition步骤类似。也运用了快慢指针。其中快指针用于遍历数列。将trim_space中的while循环写成以下形式,可能大家就能理解了。如下:static void trim_space(char *line) { int pre = -1; int work_index = 0; while( line[work_index] != '\0') { if(!my_isspace(line[work_index])) { line[++pre] = line[work_index++]; }else { if(pre == -1 || my_isspace(line[pre])) { work_index++; }else { line[++pre] = line[work_index++]; } } } line[++pre] = '\0'; }
相关文章推荐
- iOS 去除字符串中的空格或多余空格(适合英文单词)
- 去除字符串中单词的多余空格
- 第16周项目2--用指针玩字符串(去除第一个单词前的空格)
- 从一个字符串去除多余的空格
- Java去除字符串多余空格以及首尾空格
- 第十六周项目二用指针玩字符串任务五:去除句子中第一个单词前的空格,返回去除了空格的字符串(用指针作形参)
- 第16周项目2.6 去除句子中所有多余的空格,返回处理后的字符串
- 第16周项目2--用指针玩字符串(去除句子中所有多余的空格)
- C#字符串中去除多余的空格保留一个的实例
- 第十六周项目2-用指针玩字符串(任务五:去除句子中第一个单词前的空格)
- 第十六周项目二 用指针玩转字符串-去除所有多余空格
- 第十六周 项目二 用指针玩转字符串(去除多余空格)
- Java去除字符串多余空格以及首尾空格
- 检查回文字符串重难点:去除多余标点和空格
- 第十六周 项目二:用指针玩字符串(2.5.1:去除句子中第一个单词前的空格(用指针作形参))
- 第十六周 项目二--用指针玩字符串(2.5去除句子中第一个单词前的空格并返回--指针作形参)
- 第十六周项目二 用指针玩转字符串-去除第一个单词前空格
- 去除字符串前后和中间多余的空格
- 去除字符串多余的空格
- Qt中去除QString字符串里面多余的空格