如何用c语言将一个字符串中单词间的多个空格合并成一个?

 我来答
这个名有人取了
2015-04-26 · TA获得超过685个赞
知道小有建树答主
回答量:311
采纳率:100%
帮助的人:305万
展开全部

删除首尾空格并将中间空格合并成一个,代码如下,请采纳

#include<stdio.h>

int main()

 char s[250],*p=s,*q=s; 
 printf("Enter a string!\n");
 gets(s); 
 while(*p==' ')  
  p++; 
 while(*p)
 {  
  if(*p==' ')
  {  
   *q++=*p++;  
   for(;*p==' ';p++); 
  }  
  else   
   *q++=*p++; 
 }
 *q='\0';
 if(*(q-1)==' ')
  *(q-1)='\0';
 printf("%s\n",s);
 return 0;
}
lxmatgz
2017-07-31 · TA获得超过899个赞
知道小有建树答主
回答量:241
采纳率:100%
帮助的人:81万
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void omitSpace(char *str)
{
    char *front = str;
    char *last = str;
    if(str == NULL) return;

    while((*front) == ' ')//omit space in the beginning
    {
        ++front;
    }

    while((*front) != '\0')
    {
        if((*front) == ' ')
        {
            *last = ' ';
            while((*front) == ' ')
            {
                ++front;
            }
        }
        else
        {
            *last = *front;//can also add one if condition to avoid unnecessary assignment:
            if(last != front)
            {*last = *front;}
            ++front;
        }
        ++last;//front has pointed to the next char, so don't ++front;
    }
    *last = '\0';
}

int main()
{
    char s[] = {" Hello     world,   hello   C. "};
    printf("%s\n",s);
    omitSpace(s);
    printf("%s\n",s);
    return 0;
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2018359
2017-09-06 · TA获得超过3494个赞
知道大有可为答主
回答量:3486
采纳率:73%
帮助的人:1439万
展开全部
void fun(char* s)
{
int i=0,j=0,f=0;
while(1)
{
if(s[i]=='\0')
{
break;
}
if(s[i]==' ' && f==0)
{
i++;
continue;
}
if(s[i]!=' ')
{
f=1;
s[j++]=s[i++];
continue;
}
else if(s[i]==' ' && s[j-1]==' ' && j>0)
{
i++;
continue;
}
else
{
s[j++]=s[i++];
continue;
}
}
s[j]='\0';
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三天打鱼N
推荐于2017-06-28 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:603万
展开全部
void f(char *s){
char *p=s;
while(*s!='\0')
{
while(*s==' ' &&*(s+1)==' '){s++;}
*p=*s;s++;p++;
}

*p='\0';
}
测试一下吧
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2017-08-01
展开全部
循环,拷贝另一个字符串,然后在判断上一个字符,如果是空格,当前的就跳过。。。。

~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式