/*
Name: 从一个字符串中去除多余的空格(用指针描述)
Copyright:
Author:
Date: 18-09-07 19:38
Description: 函数原形: void deblank(char string[])
功能:如果一个字符串有一个地方由一个或多个连续空格符组成,就把它们改为单个空格字符
出处:《c和指针》Page65No.7
Compiler:Dev-C++
*/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
void deblank(char string[])
{
char *pstr,*_pstr,temp; //声明两个指针变量,和一个temp(用来暂时存储一个字符)
pstr=string; //让psrt指向要处理的字符串
while(*pstr!=EOF) //如果不是字符串结尾则循环
{
if(*pstr==' ') //如果第一个下标变量的值是空格符
{
pstr++; //指向下一个下标变量
_pstr=pstr; //让_pstr和_pstr同步
if(*_pstr==' ') //如果下一个下标变量也是空格符
{
while(*_pstr!=EOF) //后面的数组元素整体向前移动一个位置
{
temp=*_pstr;
_pstr--;
*_pstr=temp;
_pstr++;
_pstr++;
}
_pstr=pstr; //让_pstr指向原位置,然后返回if(*_pstr==' ')继续判断当前位置是否为空格符
}
}
else
pstr++; //如果不是空格则继续向下移动指针
}
}
int main(void)
{
char str[50],msg[]={"Input a string:"};
puts(msg);
gets(str);
deblank(str);
puts(str);
getch();
return 0;
}
这段代码有问题吗?怎么结果老是不对??
晕,一段代码弄到半夜,真郁闷。