删除字符串中的所有空格,指针


#include<stdio.h>
/*
* 该函数用来实现删除字符串中的所有空格
*a为指向字符串数组的指针
*/
char *delete_space(char *a)
{
    // 请在下面添加代码
    // ********** Begin ********** 
    int i,j;
    for( i = 0; *(a+i) == '\0' ; i++ ){
        while( *(a+i) == ' ' ){
            j = i;
            *(a+j) = *(a+j+1);
            j++;
        }
    }
    // **********  End  **********    
    return a;
}
int main()
 {
     char a[200];
     gets(a);
     delete_space(a);
     puts(a);
    return 0;
 }   

输出并不能删除所有空格,总是会保留一个

修改如下,供参考:

#include<stdio.h>
/*
* 该函数用来实现删除字符串中的所有空格
*a为指向字符串数组的指针
*/
char *delete_space(char *a)
{
    //?请在下面添加代码
    // **********?Begin?**********?
    int i,j;
    for( i = 0 ,j = 0; *(a+i) != '\0' ; i++ ){
    //for( i = 0; *(a+i) == '\0' ; i++ )
        if(*(a+i) == ' ') continue;
        *(a+j) = *(a+i);
        j++;
        // while( *(a+i) == ' ' )   {
        //    j = i;
        //    *(a+j) = *(a+j+1);
        //    j++;
        //}
    }
    *(a+j) = '\0';
    //?********** ?End? **********
    return a;
}
int main()
 {
     char a[200];
     gets(a);
     delete_space(a);
     puts(a);
     return 0;
 }


char *delete_space(char *a)
{
    // 请在下面添加代码
    // ********** Begin ********** 
    char *p, *q = a;
    while (*q)
    {
        if (*q == ' ')
        {
            p = q--;
            while (*p)
            {
                *p = *(p + 1);
                p++;
            }
        }
        q++;
    }
    // **********  End  **********
    return a;
}