简单的C程序<二>:字符间空格处理
来源:互联网 发布:电脑做账软件 编辑:程序博客网 时间:2024/06/02 02:02
问题:编写一个函数trim(char s[])将s中连续的多个空格用一个空格代替。
解法一:
#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循环,对于一些条件还是不一样的,反正我不是一次能写成功。
0 0
- 简单的C程序<二>:字符间空格处理
- 简单的C程序<一>:字符间空格处理
- c语言处理字符中的空格 函数
- C语言练习之删除字符间多余的空格
- 经典c程序(0013)---输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
- 如何解决 html 中多空格字符被当作一个空格字符处理的问题
- 简单的字符乱码处理
- C语言字符处理经典小程序
- 一个简单的字符程序
- URL参数中带有特殊字符+,空格,/,?,%,#,&,=的处理
- C的字符处理函数
- C常用的字符处理
- 判断字母,空格,和其他字符个数的程序
- C语言中空字符,空格
- IOS 去空格处理 特殊字符处理
- 特殊的空格字符
- 特殊的空格字符
- 简单的c程序
- linux centos7 svn server 搭建 支持http访问
- python中文编码问题
- Java基础-学习笔记(前言)
- 使用java实现去除各种空格
- JavaScript权威指南--Chapter5 语句
- 简单的C程序<二>:字符间空格处理
- xml解析
- Webrtc Intro - kurento
- OC UIFont字体设置
- mongodb格式化结果
- java中的内部类总结
- Duplicate id, tag null, or parent id 0x0 with another fragment 解决方案
- 线程绑定CPU核-sched_setaffinity
- mac编译Android版本ffmpeg的x86_64架构库