如何用c语言将一个字符串中单词间的多个空格合并成一个?
6个回答
展开全部
删除首尾空格并将中间空格合并成一个,代码如下,请采纳
#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;
}
展开全部
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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';
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
void f(char *s){
char *p=s;
while(*s!='\0')
{
while(*s==' ' &&*(s+1)==' '){s++;}
*p=*s;s++;p++;
}
*p='\0';
}
测试一下吧
char *p=s;
while(*s!='\0')
{
while(*s==' ' &&*(s+1)==' '){s++;}
*p=*s;s++;p++;
}
*p='\0';
}
测试一下吧
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2017-08-01
展开全部
循环,拷贝另一个字符串,然后在判断上一个字符,如果是空格,当前的就跳过。。。。
~
~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询