c总结5 --- 去除两边空格(空白字符)(指针学习4)
2015-10-19 10:24
302 查看
在输入或输出字符串的时候,我们需要对现有的字符串进行简单的处理,比如去除字符串两的空格(空白字符),
我们定义两个下标,分别代表开始下标和最后下标(\0前位置,不是\0),不断的循环 前面的下标自加,后面的下标自减,直到遇到非空白字符终止。
此时,我们就可以知道两个关键要素:1、有效字符的长度;2、有效字符的首地址
我们可以计算出来有效字符是多少, 比如前面的下标为2, 后面的下标为4 此时可以用 4-2,但是这样少算了一个(不信的话你自己数一数),所以在加上1即可。
我们可以借助数组的首地址,加上前面的下标 便可以获取到有效字符的首地址。
其他看代码
直接上代码
我们定义两个下标,分别代表开始下标和最后下标(\0前位置,不是\0),不断的循环 前面的下标自加,后面的下标自减,直到遇到非空白字符终止。
此时,我们就可以知道两个关键要素:1、有效字符的长度;2、有效字符的首地址
我们可以计算出来有效字符是多少, 比如前面的下标为2, 后面的下标为4 此时可以用 4-2,但是这样少算了一个(不信的话你自己数一数),所以在加上1即可。
我们可以借助数组的首地址,加上前面的下标 便可以获取到有效字符的首地址。
其他看代码
直接上代码
#include "stdafx.h" #include <string.h> #include <stdlib.h> #include <ctype.h> /************************************************************************/ /* 函数名称:myStrTrim /* 函数功能: 将前后 含有空白字符的字符串 提出出来 /* 参数1: 前后含有空白字符的字符串 /* 参数2: 去除空白字符的字符串 /* 返回值: 非0代表失败 /* 说明: #include <ctype.h> int isspace( int ch ); 如果参数是空格类字符(即:单空格,制表符,垂直制表符,满页符,回车符,新行符), 函数返回非零值,否则返回零值。 /************************************************************************/ int myStrTrim(char * p, char * buf) { int ret = 0; int ncount = 0; //定义两个下标 一个从0开始 一个从后面开始 int i, j; if (p == NULL || buf == NULL) { ret = -1; return ret; } //第一个下标 i = 0; //最后一个下标, 是 \0前面的字符的下标 j = strlen(p) - 1; //如果是空白字符 并且 不为'\0' 开始下标自增 while (isspace(p[i]) && p[i] != '\0') { i++; } //如果是空白字符 并且j不是0 末尾下标自减 while (isspace(p[j]) && j>0) { j--; } //用后面的下标 减去 前面的下标 获取到中间的字符数量 //因为多减一个 所以再加一 //这就获取到了 有效字符串 不含有\0 的字符个数 ncount = j - i + 1; //从 p+i的位置 拷贝 ncount个字符到 buf中去 strncpy_s(buf, ncount + 1, p + i, ncount); //最后一个字符添加上 \0 buf[ncount] = '\0'; return ret; } int _tmain(int argc, _TCHAR* argv[]) { char p[] = " adc "; char buf[120] = { 0 }; int a = myStrTrim( p,buf); printf("%d %s \n", a, buf); system("pause"); return 0; }
相关文章推荐
- 一个Oracle数据源切换问题
- 手机网站的几点注意
- WIN7局域网文件共享设置方法
- Android应用层对proc节点的读写
- memcache的最佳实践方案。
- Python
- 一个web.py搭建的个人网站
- Android打开指定程序(微博/微信/人人等)
- 常见hash算法的原理
- c#子线程调用主线程控件
- nslog
- Bone Collector
- Android应用发布平台
- 10月15日全球域名商(国际域名)解析新增保有量TOP15
- Android应用发布平台
- 《crazyFood》项目总结
- 启动CSDN博客之旅
- html:5的新特性之canvas标签的使用大全
- response.sendRedirect 的功能是地址重定向(页面跳转)
- 设计模式六大原则