给定字符串(ASCII码0-255)数组,请在不开辟额外空间的情况下删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个,例如:“ i am a little boy. ”变成“i am a little boy.”语言不限。
/*#include<iostream>
using namespace std;
void fun(char s[],int k,int m,int n)
{
int t;
for(t=m;t<=n;t++)
s[k++]=s[t];
}
void FormatString(char str[],int len)
{
int i=-1,j,k=0,t=0,m,n;
while(str[++i]==' ');
printf("i=%d\n",i);
for(m=len-1;str[m]==' ';m--);
printf("m=%d\n",m);
while(k<=m)
{
for(j=i;j<m;j++)
if(str[j]==' ')
{
fun(str,t,i,j-1);
t=t+j-i-1;
str[++t]=' ';
t++;
break;
}
if(j==m)
{
fun(str,t,i,j);
t=t+j-i;
str[++t]='\0';
break;
}
for(n=j+1;str[n]==' '&&n<=m;n++);
i=n;
k=n;
}
}
void main()
{
char str[50]=" I am a little boy. ";
int temp;
temp=strlen(str);
FormatString(str,temp);
printf("%s",str);
}
*/
#include<iostream>
#include<assert.h>
using namespace std;
void FormatString(char str[],int len)
{
assert(str!=NULL);
int i=0,j=0,k=0;
while(str[i]==' ')i++;
while(str[i]!='\0')
{
if(str[i]==' '&&str[i+1]==' '||str[i+1]=='\0')
{
i++;
continue;
}
str[j++]=str[i++];
}
str[j]='\0';
}
void main()
{
char str[50]=" I am a little boy. ";
int temp;
temp=strlen(str);
FormatString(str,temp);
printf("%s",str);
}