要求:去除句子句首句尾的空格,单词间的空格若连续出现多个,只保留一个

注释:两种方法实现了。第一种方法比较水,参照之前写的把句子中的空格转换为“%20”那道题,硬是调用自带的函数,能实现,但感觉略复杂化了,就不多说了

第二种方法,逐个读取字符串里的字符,逐个判断,简单易懂,先去除句首句尾空格,缩小范围,再在这个小范围里逐个判断,实现

#include <stdio.h>
#include <string>
#include <string.h>
#include <iostream>using namespace std;char* formatString1(char* sourceString){int length1 = strlen(sourceString);int length2 = 0;if(length1==0)return '\0';char space[]= "  "; char final[256];char *p;int cnt=0;//句首处理p=sourceString;while(*p == ' ')p++;strcpy(sourceString,p);length1 = strlen(sourceString);while(strstr(sourceString,space)!=NULL){p=strstr(sourceString,space);length2=strlen(p);memcpy(&final,sourceString,(length1-length2));final[(length1-length2)]='\0';p++;p++;while( *p == ' '){cnt++;//计空格数p++;}--p;//留一个空格strcat(final,p);length1=length1-(cnt+1);cnt=0;strcpy(sourceString,final);}//句尾处理length1 = strlen(sourceString);p=&sourceString[length1-1];while(*p == ' '){p--;cnt++;}sourceString[length1-cnt]='\0';return sourceString;
}char* formatString2(char* sourceString){int length=strlen(sourceString);if(length==0)return "";int start=0,end=length-1;while(sourceString[start] == ' ')//句首start++;while(sourceString[end] == ' ')//句尾end--;char str[256];int pos=0;for(int i=start;i<=end;i++){if(sourceString[i] != ' ')str[pos++]=sourceString[i];else if(sourceString[i] == ' ' && sourceString[i-1] == ' ')//多个空格{str[pos++]=' ';while(sourceString[i] == ' ')i++;i--;//while循环里还要加一次}else if(sourceString[i] == ' ' && sourceString[i+1] != ' ')//单独一个空格str[pos++]=' ';}str[pos]='\0';return str;
}int main()
{char str[]= "   I love      meituan    ";char *p=formatString2(str);printf("%s//over\r\n",p);
}

英文语句处理(空格处理)相关推荐

  1. 输入大写字母,输出大小写字母及其对应的ASCII码;输入语句,将大写字母变成小写字母;将句子中每个单词的第一个字母转换为大写字母;输入一串字符,分别算出英文字母、空格、数字、其他字符的个数(C)

    养成好习惯,点个赞 再走:有问题,欢迎私信.评论,我看到都会回复的 以下题目是对于ASCII码的一些练手题 在c语言中 使用%c输出的是字符本身 使用%d输出的是字符对应的ASCII 在ASCII中, ...

  2. python接收输入的一行字符只统计数字的个数,Python(统计字符),python实例,输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数...

    Python(统计字符),python实例,输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数 题目:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 程序分析:利用 ...

  3. 分别统计出其中英文字母、空格、数字和其它字符的个数 matlab 程序,编写一段程序,要求先输入一行字符,然后分别统计出其中英文...

    编写一个求和的程序,要求能任意输入两个整数,求和 用javascript写 +=functionadd(){varA=document.getElementById("a").va ...

  4. Java代码工具之中英文语句分词

    在自然语言处理中比较热门的操作就是中文或英文语句分词了,分词就是按照不同的算法和参数将语句分成若干词汇.拆分后的关键词可以进行词频统计或者词云图片生成等,能够快速方便的找到语句的核心主题热点. 在ja ...

  5. 7-8 逆序输出英文语句

    输入一个英文句子(假设句子里没有标点,单词之间以空格分隔),将语句中的单词进行逆序排列后输出.例如:用户输入"How are you",则程序输出"you are How ...

  6. c++/输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数

    # 题目 输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数 //要求:输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数#include <iostream> ...

  7. C++/PTA 2017final英文语句格式简单检查

    2017final英文语句格式简单检查 题目要求 解题思路 代码 getline函数 cstring头文件 总结 题目要求 英文书写中,句首字母通常为大写,其余为小写,单词"I"除 ...

  8. C语言编程>第二周 ⑤ 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    例题:输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. 代码如下: /*程序分析:利用while语句,条件为输入的字符不为'\n'*/ #include "stdio.h& ...

  9. ACMNO.8输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32

    题目描述 输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. 输入 一行字符 输出 统计值 样例输入 aklsjflj123 sadf918u324 asdf91u32oasdf/.' ...

  10. C语言学习之输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

    输入一行字符,分别统计出其中英文字母.空格.数字和其他字符的个数. #include <stdio.h> #include <string.h> void main(){cha ...

最新文章

  1. php 一致性hash,【转载】memcache分布式 [一致性hash算法] 的php实现
  2. 15、修改和删除触发器(DROP TRIGGER)
  3. [POI2008] Poc (原名 Trians) Treap+Hash
  4. SQL JOIN,你想知道的应该都有
  5. React学习笔记:入门案例
  6. 拼多多11.11:无定金、不预售,“好牌子、好实惠”底价直降
  7. 详解 C++ 的隐式类型转换与函数重载!
  8. Lightroom Classic教程:如何显示堆叠?
  9. 达内java1707第一阶段_达内Java就业班学习路线图(附视频教程)
  10. VMware Pro16 安装MacOS 11/12教程
  11. 后端开发面试自我介绍_Java后端面试总结
  12. Windows下的Neo4j下载与安装
  13. 百分字符知识付费教程
  14. 如何在Ubuntu18.4中设置ERPNEXT开源ERP生产环境开机运行
  15. adb 切换默认桌面,OPPO默认桌面替换教程
  16. Sencha学习笔记4: Creating your First App - 官方创建您的第一个Sencha Touch应用指导
  17. C99标准里的inttypes.h头文件
  18. java乱码base64_JavaScript BASE64算法实现(完美解决中文乱码)
  19. 计算机考试怎么另存为,Word2007另存为.doc的更快捷方法
  20. 4种解法 - 最小的k个数

热门文章

  1. mount cifs出现cannot allocate memory解决方法
  2. Android开发:怎样把Android studio中的Library公布到Jcenter
  3. iOS正则表达式验证
  4. linux 单引号,双引号,反引号的小总结。
  5. apue学习笔记(第三章 文件I/O)
  6. 多线程模式之MasterWorker模式
  7. SharePoint品牌化和自定义--第三章节--收集品牌化需求(3)--要当心的地方
  8. uva 10161 Ant on a Chessboard 蛇形矩阵 简单数学题
  9. android overridePendingTransition
  10. McAfee----McAfee 2008 中文版