/****************************************
* File Name : deblank.c
* Creat Data : 2015.1.19
* Author : ZY
*****************************************/
/*当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。
注意当你遍历整个字符串时要确保它以NUL字符结尾*/
#include <stdio.h>
void deblank( char string[],int n )
{
int i,j,k,count = 0;
for( i = 0;i < n;i++ )
{
if( ' ' == string[i])
{
for( j = i+1;j < n;j++ )
{
if( ' ' == string[j])
count++;
else
break;
}
if( count>0 )
{
for( k = i+count+1;k < n;k++ )
{
string[k-count]=string[k];
}
string[n-count]='\0';
}
count = 0;
}
}
}
int main()
{
char arr[] = {"1 2345 67"};
deblank(arr,sizeof(arr)/sizeof(arr[0]));
printf("%s\n",arr);
return 0;
}
/****************************************
* File Name : deblank.c
* Creat Data : 2015.1.19
* Author : ZY
*****************************************/
/*当函数发现字符串中如果有一个地方由一个或多个连续的空格组成,就把它们改成单个空格字符。
注意当你遍历整个字符串时要确保它以NUL字符结尾*/
#include <stdio.h>
void deblank( char *s )
{
char *p = s;
char ch[100] = {0}; //临时数组
char *q = ch;
while(*p != '\0')
{
if(*p != ' ' ) //如果不是空格临时数组保存字符
{
*q = *p;
p++; //后移
}
else //如果是空格
{
*q = *p; //保存一个空格
while(*p == ' ')//让指针移动到不是空格的位置,跳过多余的空格
{
p++;
}
}
q++; //临时数组指针后移
}
q = ch;
while(*q != 0) //把临时数组里的元素,拷贝到原来的字符数组里
{
*s++ = *q++;
}
*s = '\0'; //最后一个元素结束符
}
int main()
{
char arr[] = {"1 2345 67"};
deblank(arr);
printf("%s\n",arr);
return 0;
}