在删除函数中再定义一个指针保存当前指向的空格的位置,将空格以后的数据都往前移,再从当前位置继续查找空格,不是空格则将原指针往移,若碰到空格则继续进行上步循环。
写这个函数遇到一个问题:删除不连续的空格则成功,但是多删除几个连续的空格,则删除不完,原因是找到空格后移完数据将原指针也往后移动了一位,所以若是连续的空格则漏掉了一个直接到下一位去查找了,所以在找到这个空格时,移动完其后的数据后原指针不往后移即可(程序中注释的那个);
//删除函数字符串内所有空格
#include<stdio.h>
void delete_space(char *p);
void main()
{
char arr[]="hello, world s";
printf("%s\n",arr);
delete_space(arr);
printf("%s\n",arr);
}
void delete_space(char *p)
{
char *q;
while(*p!=0)
{
if(*p!=' ')
p++;
else
{
q=p;
while(*q!=0)
{
*q=*(q+1);
q++;
}
//p++;
}
}
}