如“*****as****adadq*****”(*是空格)变成“as*adadq".
/*字符串去除多余的空格,一个或多个连续的空格变成一个空格(声明一个新的数组存储)*/
#include<stdio.h>
#include<string.h>
char *deblank(char string[])
{
int i, j = 0;
char *str = string;
for (i = 0; string[i] != '\0'; i++)
{
if (string[i] != ' ')
{
*str++ = string[i];
}
if ((string[i] == ' ') && !(string[i + 1] == ' ')) /*该情况适用于字符串全是空格的情况下*/
{
*str++ = string[i];
}
}
*str = '\0';
/*注意关键错误点,字符数组string有效部分已经遍历完毕,由于str指向的数组被赋值后,指针str自加,
*因此这时候指针str已经指向字符数组string最后一位,
即指向要添加'\0'的地方*/
//str = string;
/*将str指针的指向重新调至字符串的首位*/
return string;
}
int main()
{
char a[100], *p;
int i, j;
gets(a);
p = deblank(a);
puts(p);
system("pause");
return 0;
}