c语言怎么删除多出的空格

Python010

c语言怎么删除多出的空格,第1张

从0下标开始,一个字符一个字符地自己向自己拷贝,当拷入一个空格时,将后面的空格跳过去。设置2个初值为0的变量i和j,i用来控制遍历原字符串数组,j用来记录新拷入的字符位置,用下面的代码就可实现!

//#include "stdafx.h"//If the vc++6.0, with this line.

#include "stdio.h"

int main(void){

    char str[1000]

    int i,j

    gets(str)

    for(j=i=0str[i]i++){

        if((str[j++]=str[i])==' '){//自己向自己拷贝,直到遇见' '

            for(i++str[i]==' 'i++)//遇到' '跳过后面的' '

            i--

        }

    }

    str[j]='\0'//补个结束符

    printf("%s\n",str)//打出来看看

    return 0

}

假设字符串是这样的

(_

表示

空格

,为了能看清,在相邻两个字符间放空格

"_

_

a

b

c"

第一个循环

while(*s=='

')

s++

使s指向第一个非空格的字符a

前面有

t=s

所以第二个训话

while(*t++=*s++)

就是

用a覆盖第一个空格

b覆盖第二个空格c覆盖a

对于

*t++=*s++

*(t++)=*(s++)

虽然++

的优先级高于*

但是

++在后

所以先使用t

s

然后才++

即相当于

*t

=

*s

t++

s++

另外

*t++=*s++

使做为while的

入口检测

表达式的

所以当s指向'\0'使

先*s了

所以会把

'\0'复制到*t