2025年4月28日 星期一 乙巳(蛇)年 正月廿九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > C语言

C语言压缩字符串(删除多余空格)

时间:01-03来源:作者:点击数:73

下面的代码将使用两种方法删除字符串中的多余空格,如果两个字符之间的空格数目大于 1,那么只保留一个空格,否则不做处理。

由这个例子可以联想到代码的压缩,删除空格是压缩代码的第一步。

  • #include <stdio.h>
  • #define MAXBUFF 128
  • int getline(char line[], int nmax);
  • int compact1(char line[]);
  • int compact2(char line[]);
  • int main(void) {
  • char buffer1[MAXBUFF];
  • char buffer2[MAXBUFF];
  • int len;
  • len = getline(buffer1, MAXBUFF);
  • printf("You entered : %s\n", buffer1);
  • strcpy(buffer2,buffer1);
  • printf("Which is : %s\n", buffer2);
  • len=compact1(buffer1);
  • printf("compact1: len=%d, %s\n",len, buffer1);
  • len=compact2(buffer2);
  • printf("compact2: len=%d, %s\n",len, buffer2);
  • }
  • // 输入一行最大长度为 nmax 的字符串,并返回其长度
  • int getline(char line[], int nmax)
  • {
  • int len;
  • char c;
  • len = 0;
  • printf("Enter a string [CR to exit]: ");
  • while(((c=getchar())!='\n') && len<nmax-1)
  • line[len++]=c;
  • line[len]='\0';
  • return len;
  • }
  • // 将多个连续空格替换为一个空格,并返回替换后的字符串的长度
  • int compact1(char line[])
  • {
  • int cursor=0; // 即字符数组的当前下标
  • int prevspace = 0; // 如果上一个位置是字符串则返回true
  • int lcv=0;
  • if(line[cursor]=='\0')
  • return 0;
  • do{
  • if((line[cursor]==' ')&&prevspace){
  • // 如果一个空格前面还有一个空格,那么将后面的字符串左移一个位置
  • for(lcv=cursor;line[lcv];lcv++)
  • line[lcv]=line[lcv+1];
  • }else
  • prevspace=(line[cursor++]==' ');
  • }while(line[cursor]);
  • return cursor;
  • }
  • // 将多个连续空格替换为一个空格,并返回替换后的字符串的长度
  • int compact2(char line[])
  • {
  • int cursor=0; // 字符数组的当前下标
  • int prevspace = 0; // 如果上一个位置是字符串则返回true
  • int lcv = 0; // 将字符串复制到哪个位置
  • do{
  • if(!((line[cursor]==' ')&&prevspace)){
  • line[lcv++]=line[cursor];
  • prevspace=(line[cursor]==' ');
  • }
  • }while(line[cursor++]);
  • return(lcv-1); // 遇到 '\0' 返回 -1
  • }

可能的输出结果:

Enter a string [CR to exit]: 城东书院    的   网址    是:     http://www.cdsy.xyz/
You entered : 城东书院    的   网址    是:     http://www.cdsy.xyz/
 Which is : 城东书院    的   网址    是:     http://www.cdsy.xyz/
compact1: len=54, 城东书院 的 网址 是: http://www.cdsy.xyz/
compact2: len=54, 城东书院 的 网址 是: http://www.cdsy.xyz/
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门