如何删除字符串中的空格

news/2024/11/8 6:32:49/

一、字符串第二弹:两头堵模式

字符串问题中, 模拟实现strcpy,和strstr 是两大重点,现在介绍第三大重点,两头堵模式,即在形如" abcdefghijklmnopqrstuvwxyz "的字符串,去掉前后空格, 形成新的字符串,或是求出非空格的字符个数等,都需要用到两头堵模式;

二、举个例子:

对以下字符串," abcdefghijklmnopqrstuvwxyz "要求去掉空格形成新的字符串,并求出非字符个数;
1、while循环实现

#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int isspace1(char p)//判断字符是否为空格
{if(p==' '){return -1;//若是空格,则返回-1;}return 0;//不是空格返回0
}int getstr(char *mybuf1,char *mybuf2)
{int ret =0;int count=0;char *p= mybuf1;//找一个新的指针,将原mybuf1的数据保存一份int i=0,j=0;if(mybuf1==NULL||mybuf2==NULL)//检验实参传过来的空间是否合法{ret=-1;return ret;}j=strlen(mybuf1)-1;while(isspace1(p[i]) && p[i] != '\0')///////////1////////{i++;}while(isspace1(p[j]) && j>0 ){j--;}/////////////2///////////count=j-i+1; //非空格字符的个数memcpy(mybuf2,mybuf1+i,count);//字符串拷贝函数,不拷贝'\0'mybuf2[count]='\0';//手动在最后一个字符后面加入字符串结束标志'\0'printf("count=%d\n",count);return 0;
}
//主调函数
void main()
{int ret=0;char *buf1="   abcdefghijklmnopqrstuvwxyz   ";char buf2[100];ret=getstr(buf1,buf2);if(ret!=0)//判断是否操作成功{printf("func getstr err:(ret!=0),%d\n",ret);}else{printf("新字符串为buf2:%s\n",buf2);  }system("pause ");
}

三、运行结果:

2、for循环实现,不要isspace()函数


#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int isspace1(char p)//判断字符是否为空格
{if(p==' '){return -1;}return 0;
}int getstr(char *mybuf1,char *mybuf2)
{int ret =0;int count=0;char *p= mybuf1;int i=0,j=0;if(mybuf1==NULL||mybuf2==NULL){ret=-1;return ret;}j=strlen(mybuf1)-1;for(i=0;p[i]==' '&&p[i] != '\0'&&p[j]==' ' && j>0;i++,j--){;}count=j-i+1;memcpy(mybuf2,mybuf1+i,count);//字符串拷贝函数mybuf2[count]='\0';printf("count=%d\n",count);return 0;
}void main()
{int ret=0;char *buf1="   abcdefghijklmnopqrstuvwxyz   ";char buf2[100];ret=getstr(buf1,buf2);if(ret!=0){printf("func getstr err:(ret!=0),%d\n",ret);}else{printf("新字符串为buf2:%s\n",buf2);  }system("pause ");
}

2、运行结果:


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

相关文章

字符串删除空格问题

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

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

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

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

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

想要财务自由

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

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 默认不会使用系统代理,所以即使连…

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

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

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

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

动态规划part9 | ● 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

文章目录 198.打家劫舍思路思路代码官方题解代码 213.打家劫舍II思路思路代码官方代码困难 337.打家劫舍III思路思路代码官方题解代码困难 今日收获 198.打家劫舍 198.打家劫舍 思路 dp含义,偷前i个房,切第i个房偷 dp[i]max(dp[i-2],dp[i-3])nums[i] …