删除字符串的空白符

简介: 编制一个字符串整理函数ver(char *),实现将已知字符串s中的前导空白符和尾随的空白类字符去掉,并将字符串非空白类字符之间的连续多个空白类字符缩减为一个 char *ver(char *s){ char *p=s,*q=s;/*掠过前导空白符*/ for (;*s==' ...

编制一个字符串整理函数ver(char *),实现将已知字符串s中的前导空白符和尾随的空白类字符去掉,并将字符串非空白类字符之间的连续多个空白类字符缩减为一个

 
 
char * ver( char * s)
{
char * p = s, * q = s;
/* 掠过前导空白符 */
for (; * s == ' ' || * s == ' \t ' || * s == ' \n ' ;s ++ );
for (; * s;) { /* 顺序访问字符串s中的每个字符 */
* q ++= ( * s == ' \t ' || * s == ' \n ' ) ? ' ' : * s;
if ( * s != ' ' && * s != ' \t ' && * s != ' \n ' ) s ++ ;
else
while ( * s != ' ' || * s == ' \t ' || * s == ' \n ' ) s ++ ;
}
if (q > p && * (q - 1 ) == ' ' ) /* 如q>p,则已复制过非空白字符 */
* (q - 1 ) = ' \0 ' ; /* 如最后复制的是空白符,将其改为字符串结束符 */
else
* q = ' \0 ' ; /* 否则添加字符串结束符 */
return p;
}

对于本题,还可以设置状态进行处理,开始时让flg为0,表示程序将遇到的空白类符是字符串的前导空白符;flg为1表示在复制过程中遇到了一个中间空白类字符;

flg为2表示一个空白符字符已经处理结束.

 
 
1 char * ver( char * s)
2 {
3 int flg = 0 ;
4 char * p = s, * q = s;
5 for (; * s;s ++ ) { /* 顺序访问字符串s中的每个字符 */
6 if ( * s == ' ' || * s == ' \t ' || * s == ' \n ' ) /* 遇空白类字符 */
7 flg = (flg == 2 ) ? 1 :flg;
8 else {
9 if (flg == 1 )
10 * q ++= ' ' ; /* 遇到空白类字符,复制下一个空白符 */
11 * q ++=* s; /* 复制当前字符 */
12 flag = 2 ; /* 一个中间空白符列处理结束 */
13 }
14 }
15 * q = ' \0 ' ;
16 return p;
17 }
相关文章
|
存储 关系型数据库 MySQL
【Databend】数据类型
【Databend】数据类型
205 1
|
11月前
|
人工智能 算法 Python
2025年IT员工数量预期将达到十多年来的最低水平
2025年IT员工数量预期将达到十多年来的最低水平
|
供应链 监控 搜索推荐
ERP系统中的订单管理与供应链协作解析
【7月更文挑战第25天】 ERP系统中的订单管理与供应链协作解析
1007 6
|
存储 Java
Java环境下使用CsvReader()读取CSV文件
Java环境下使用CsvReader()读取CSV文件
|
JSON 安全 搜索推荐
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
白日梦的Elasticsearch实战笔记,32个查询案例、15个聚合案例、7个查询优化技巧(一)
1472 1
|
设计模式 Java 开发者
吐血整理!最全Spring设计模式总结
吐血整理!最全Spring设计模式总结
1450 0
吐血整理!最全Spring设计模式总结
|
供应链 安全 API
2024攻防演练:4大趋势凸显,如何做好常态化安全防御?
2024年全国性攻防演练加剧,呈现四大趋势:0day漏洞转攻供应链,攻击手段多元化,工具更隐蔽智能,API接口成主要目标。瑞数信息研究员陆攀建议企业采取四大防御策略:缩小攻击面,加强供应链安全,提升社工安全意识,及建立0day防御体系。企业需构建常态化的安全防御,以应对日益复杂的网络安全挑战。
501 0
|
存储 固态存储 数据安全/隐私保护
影像医学PACS系统源码带高级影像后处理功能(三维重建+还原)
提供多种高级影像后处理功能:(包括三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜、最大/小密度投影、心脏动脉钙化分析); • 覆盖院内大多数影像科室。可连接医院的多种影像设备:包括CT、MRI、CR/DR、DSA、ECT、PET、PET/CT、PET/MR、US、内窥镜、病理显微镜、ECG等; • 高效的检查信息查询:可通过影像号、患者姓名、年龄、性别、检查时间、检查设备等多种查询条件迅速的获取查询患者; • 具有预约、登记、排队、收费、诊断报告、查询、统计、管理等功能; • 实用、便捷的“时间轴”管理,实现不同设备、不同时期检查影像的对比显示、同步显示等等;
523 0
影像医学PACS系统源码带高级影像后处理功能(三维重建+还原)
|
存储 NoSQL Java
微服务技术系列教程(46)-SpringBoot整合MongoDB(文章评论案例)
微服务技术系列教程(46)-SpringBoot整合MongoDB(文章评论案例)
376 0