C 实现 删除字符串空白符的函数 strtrim
发布日期:2021-06-30 18:54:58
浏览次数:2
分类:技术文章
本文共 2043 字,大约阅读时间需要 6 分钟。
说在前面的话
字符串操作在很多C语言比赛里面都有涉及,最近公众号里面的C语言比赛,都是两个关于字符串操作的题目,希望大家认真看题目。
直接上代码
/************************************************************************* > File Name: trim.c > Author: > Mail: > Created Time: Mon 12 Nov 2018 10:16:04 AM CST ************************************************************************/#include/***************************************************************************** 函 数 名 : strtrim 功能描述 : 删除行首、行尾空白符号 输入参数 : char *is 输出参数 : 无 返 回 值 : char * 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2018年11月12日 作 者 : strtrim 修改内容 : 新生成函数*****************************************************************************/char * strtrim(char *s) { char *p = s; char *q = s; //去掉行首的空格 while (*p==' ' || *p=='\t') ++p; //赋值 while ((p != NULL)&&(q != NULL)&&(*p != '\0')&&(*p != '\0')) { *q++ = *p++; }; //删除'\0'字符 注意是 -2 上面q++是先操作再自加 q -= 2; //去掉行末的空格 while (*q==' ' || *q=='\t') --q; //给字符串添加字符结束标志 *(q+1) ='\0'; //这里的return s要注意看好 //因为p q经过一系列操作后,已经不是原来的位置,越界了 ,s还在原来位置,所以return s才是正确的。 return s;}/***************************************************************************** 函 数 名 : strtrimc 功能描述 : 删除字符串空白符,包括行首和行尾 输入参数 : char * s 输出参数 : 无 返 回 值 : char * 调用函数 : 被调函数 : 修改历史 : 1.日 期 : 2018年11月12日 作 者 : strtrim 修改内容 : 新生成函数*****************************************************************************/char * strtrimc( char * s ){ char * p1 = s; char * p2 = s; while(*p1 != '\0') { while(*p1 == ' ' || *p1 == '\t') { p1 ++; } * p2 ++ = *p1 ++; } *p2 = '\0'; return (s);}void main(void){ char str[1000] = {" adf asdfasldf jjjjjjjjj iiii "}; char str1[1000] = {" adf asdfasldf jjjjjjjjj iiii "}; puts("Start main."); printf("%s\n",strtrimc(str)); printf("%s\n",strtrim(str1));}
注意问题
1 常量区
刚开始的时候,我写的是char * s = "adfasdfasdfsf adfasdf adfasdfad ";
然后出现段错误,这里定义的s,保存在的是常量区,所以不能做赋值等操作,大家对字符串操作的时候要特别注意。2指针的返回值问题
原来我返回的是p1 ,p1 p2 s原来是相等的,但是经过一系列运算后,他们的值已经不相等了,他们的值如上面显示那样,所以返回值一直要返回s。转载地址:https://linus.blog.csdn.net/article/details/83993501 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月26日 04时00分08秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
应届渣渣前端的艰难求职之路
2019-04-30
2021年不可错过的17种JS优化技巧(一)
2019-04-30
2021年不可错过的17种JS优化技巧(二)
2019-04-30
月薪15~20k的前端面试问什么?
2019-04-30
一文学会使用Vue3
2019-04-30
我是如何看Vue源码的
2019-04-30
在 Vue 中用 Axios 异步请求API
2019-04-30
LVM逻辑卷------基础命令详解(三分钟入门)
2019-04-30
LVM逻辑卷------详细操作过程(三分钟上手)
2019-04-30
mysql——介绍及安装与基本用法
2019-04-30
MySQL数据库之索引
2019-04-30
MYSQL——事务操作+视图+存储引擎
2019-04-30
Mysql——完全备份+增量备份+备份恢复
2019-04-30
MySQL进阶查询(SELECT 语句高级用法)
2019-04-30
Mysql 之主从复制
2019-04-30
LVS负载均衡------NAT模式
2019-04-30
squid代理-----透明代理模式
2019-04-30
squid代理介绍----ACL控制应用+sarg日志分析+反向代理
2019-04-30
redis集群之主从模式+哨兵模式
2019-04-30