读书人

帮小弟我调试一下,关于删除字符串空格

发布时间: 2012-03-03 15:33:03 作者: rapoo

帮我调试一下,关于删除字符串空格.

C/C++ code
#include<stdio.h>void main()   {    printf("\n\nbegin....\n");    char *f4(char *);    char a[20]="a  b f";        printf("%s\n",f4(a));   }char *f4(char *p){    int i=0;    int j;    while(p[i]!='\0')        if(p[i++]==' ')            for(j=i;p[j]!='\0';j++)                p[j]=p[j+1];    return p;}

我调试了很久,好象只能去掉一个空格,两个空格就无法准确全部去掉

[解决办法]
前几天还回了一个帖子呢
C/C++ code
/*   将字符串尾部的空格压缩掉   */   char   *trim(  char   *s   )   {       register   int   l;           for(l=strlen(s); l>0 && isspace((u_char)s[l-1]); l--)         s[l-1]='\0';       return(s);   }   /*   将字符串首部的空格压缩掉   */   char   *ltrim( char   *s  )   {       register   char   *p;           for(p=s; isspace((u_char)*p); p++);       if(p!=s)        strcpy(s, p);       return(s);   }
[解决办法]
虽然和你要求的不一样
不过道理一样
把你的照着这个改一下就行了
[解决办法]
C/C++ code
    while(p[i]!='\0')    {        if(p[i]==' ')            for(j=i;p[j]!='\0';j++)                p[j]=p[j+1];        i++;    }
[解决办法]
#include<stdio.h>
void main()
{
printf("\n\nbegin....\n");
char *f4(char *);
char a[20]="a b f";
printf("%s\n",f4(a));
}
char *f4(char *p){
int i=0;
int j;
while(p[i]!='\0')
{
if(p[i]==' ')
{
for(j=i;p[j]!='\0';j++)
{
p[j]=p[j+1];
}
}
else
{
i ++;
}
}
return p;
}
----------------------------

WINXP + VC6.0
[解决办法]
兴剑,今天有点空闲,我来帮你修改一下看看!
[解决办法]
这样子你看能不能满足你的要求?
C/C++ code
#include <stdio.h>void  f4(char *p){      char *temp=p;      while(*p)      {             if(*p!=' ')                  *temp++=*p++;             else                  p++;       }       *temp=0;}void main(){       printf("\nbegin....\n");       char a[]="   a  cd b     f   !"; //多弄几种形式的空格       f4(a);       printf("%s\n",a);}
[解决办法]
问题出在i++了~

石头的做法不错。*temp='\0';可以更明确点表示字符串结尾~~

读书人网 >C语言

热点推荐