删除字符串中多余的空格

news/2024/11/8 6:44:18/

删除字符串中多余的空格

首先我们需要将字符串中字符之间多余一个的空格删除掉
例如"i am a student"修改后应为’‘i am a student"

算法思想:

  1. 先找到一个空格i,若i+1也为空格,则进行下一步处理,否则,继续寻找
  2. 然后再找到距离i之后的非空格j
  3. 删除i与j之间的所有空格,则只剩下i一个空格
for(i=0;str[i]!=EOF;i++){//保留一个空格("a    student"中在a和student之间只需保留一个空格) if(str[i]==32&&str[i+1]==32)//找出空格位置{for(j=i;str[j]!=EOF;j++)if(str[j]!=32)//j为i之后第一个非空格break;for(j;str[j]!=EOF;j++){//将j开始的字符串前移,删除多余空格str[i+1]=str[j];i++;}}	}

然后我们在考虑特殊情况,若字符串的第一个字符为空格,则应该将其删去
例如:“ i am a student"修改后应为"i am a student"

	if(str[0]==32){//处理字符串开头为空格(" a student"中a前面的空格应删去) for(i=0;str[i]!=EOF;i++)str[i]=str[i+1];}

将上面两种情况结合起来,得到最终的程序段:

#include<stdio.h>char str[99]="  i am     a    student  ";//删除文档里多余的空格 
void space(char *str){int i,j,k;for(i=0;str[i]!=EOF;i++){//保留一个空格("a    student"中在a和student之间只需保留一个空格) if(str[i]==32&&str[i+1]==32){k=i;for(j=i;str[j]!=EOF;j++)if(str[j]!=32)break;for(j;str[j]!=EOF;j++){str[k+1]=str[j];k++;}}	}if(str[0]==32){//处理字符串开头为空格(" a student"中a前面的空格应删去) for(i=0;str[i]!=EOF;i++)str[i]=str[i+1];}printf("修改后的字符串:%s",str);
}//主函数 
int main(){printf("修改前的字符串:%s\n",str);space(str);//printf("%s",str);
} 

结果显示如下(因for循环使用的过多,可能会是结果显示的较慢,将大家谅解):
在这里插入图片描述


http://www.ppmy.cn/news/583790.html

相关文章

如何删除字符串中的空格

一、字符串第二弹&#xff1a;两头堵模式 字符串问题中&#xff0c; 模拟实现strcpy&#xff0c;和strstr 是两大重点&#xff0c;现在介绍第三大重点&#xff0c;两头堵模式&#xff0c;即在形如" abcdefghijklmnopqrstuvwxyz "的字符串&#xff0c;去掉前后空格&a…

字符串删除空格问题

在网上看到的关于删除字符串的都是分为删除字符串前面的空格和字符串后面的空格&#xff0c;然后自己写了个可以直接删除字符串中所有空格的小代码&#xff0c;比较容易看懂 int trimspace(char *inbuf,char *outbuf)//删除所有空格 { char *ininbuf; //定义一个in指针接受…

Word查找替换,批量删除文档中空格、空行、指定符号中的任意内容

1、批量删除空格 &#xff08;1&#xff09;点击【开始】-【编辑】-【替换】按钮或按【CtrlH】组合键&#xff0c;打开“查找与替换”对话框&#xff0c;将鼠标光标定位于“查找内容”文本框中&#xff0c;然后点击“更多”按钮。 &#xff08;2&#xff09;展开“替换”栏&a…

区分BOM和DOM,区分window、document、html、body

https://blog.csdn.net/xswl134679/article/details/128795161 JavaScript三大组成部分 1. ECMAScript ECMAScript是JavaScript的语法标准&#xff0c;由ECMA&#xff08;欧洲计算机厂家协会&#xff09;制定的。 2. BOM BOM即浏览器对象模型&#xff08;brower object mode…

想要财务自由

*近日&#xff0c;有调查称“大概五分之一的年轻人存款在一万元以内。10万元存款是一个“坎”&#xff0c;存款超过10万就会超过53.7%的人。”“年轻人”“存款”两个词碰撞在一起&#xff0c;引来了广泛的关注和讨论。你认为年轻人存款难吗&#xff1f;可以从以下几个角度发表…

github拉代码报错解决方案

github拉代码经常报错 Failed to connect to github.com port 443 after 21087 ms: Timed out OpenSSL SSL_connect: Connection was reset in connection to github.com:443 解决方案 可以试下 配置 http 代理 windows 中 git 默认不会使用系统代理&#xff0c;所以即使连…

什么是域不同下的机械故障诊断?

虽然已有的基于数据驱动的智能故障诊断方法讨论了测试数据和训练数据同分布场景下的故障诊断问题&#xff0c;然而同分布假设是一种比较理想的状态。实际上&#xff0c;无论是从动力学角度上对旋转机械进行分析&#xff0c;还是依据历史经验对设备故障数据进行振动特性分析&…

5.6.4 无连接服务和面向连接服务

5.6.4 无连接服务和面向连接服务 从通信的角度上看&#xff0c;网络中各层所提供的服务可以分为两大类即无连接服务和面向连接服务&#xff0c;无连接服务与我们的邮政系统的工作模式是非常相似的&#xff0c;两个实体之间的通信不需要建立好连接&#xff0c;这是一种不可靠的…