简单的C程序<二>:字符间空格处理
2015-12-25 17:57
369 查看
问题:编写一个函数trim(char s[])将s中连续的多个空格用一个空格代替。
解法一:
总结:对于字符串的复制,一定定注意要在末尾加上\0
问题二:编写一个函数trim(char s[], int k)将s中连续的多个空格用k个空格代替,若字符间空格数量小于k则保持原样即可
解法一(for循环版):
总结:对于边界条件要想清楚,一定要考虑以下两个方面:
1. 循环控制的条件
2. 循环退出时的状态
就拿上面的程序来看:
解法二(while循环版):
总结:自己可以写完for循环,可以再试试while循环,对于一些条件还是不一样的,反正我不是一次能写成功。
解法一:
#include <stdio.h> #include <stdbool.h> void func(char s[]); int main(void) { char s[100]; gets(s); func(s); puts(s); return 0; } void func(char s[]) { int i,j; bool flag = false; i = j = 0; while (s[i] != '\0') { if (s[i] != ' ') { flag = true; s[j++] = s[i++]; } if (flag==true) { flag = false; s[j++] = s[i++]; } else { i++; } } s[j] = '\0'; }
总结:对于字符串的复制,一定定注意要在末尾加上\0
问题二:编写一个函数trim(char s[], int k)将s中连续的多个空格用k个空格代替,若字符间空格数量小于k则保持原样即可
解法一(for循环版):
#include <stdio.h> void trim(char s[], int k); int main(void) { char s[100]; gets(s); trim(s,2); puts(s); return 0; } void trim(char s[], int k) { int i,j,tmp; tmp = k; for (i=j=0; s[i]!='\0'; ++i) { if (s[i] != ' ') { tmp = k; s[j++] = s[i]; } else if (s[i]==' ' && --tmp>=0) //注意边界条件 { s[j++] = s[i]; } else { while ( s[i++] == ' '); i -= 2; //注意,循环退出时,s[i]不等于空格,且之后i又加了1 ,所以这里减2 } } s[j] = '\0'; }
总结:对于边界条件要想清楚,一定要考虑以下两个方面:
1. 循环控制的条件
2. 循环退出时的状态
就拿上面的程序来看:
解法二(while循环版):
#include <stdio.h> void trim(char s[], int k); int main(void) { char s[100]; gets(s); trim(s,2); puts(s); return 0; } void trim(char s[], int k) { int i,j,tmp; i = j = 0; tmp = k; while ( (s[j++]=s[i++]) != '\0') { if (s[i-1] != ' ') //字符 tmp = k; else if (s[i-1]==' ' && --tmp>0) //k个空格以内 continue; else //超出了k个空格 { i--; while (s[i++] == ' '); i--; } } }
总结:自己可以写完for循环,可以再试试while循环,对于一些条件还是不一样的,反正我不是一次能写成功。
相关文章推荐
- Spring MVC 4 学习2:XML配置,让Spring M跑起来
- linux centos7 svn server 搭建 支持http访问
- 使用java实现去除各种空格
- python中文编码问题
- popen()和pclose()
- JavaScript权威指南--Chapter5 语句
- CSS禁止选择DIV内的文本
- NSMutableString 常用操作
- NSError
- 大白话系列之C#委托与事件讲解(一)
- Mathematica
- Java中Socket上的Read操作阻塞问题
- Dubbo 回声调用 检测提供者是否正常 操作实例
- MySQL内置函数获取几天前的日期
- 连接
- 测试需求分析
- [转]Class 'Think\Log' not found
- 如何设计测试用例
- Xcode could not find developer disk image
- linux 之 tar 命令