帮我调试一下,关于删除字符串空格.
#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;}/* 将字符串尾部的空格压缩掉 */ 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); }
[解决办法]
虽然和你要求的不一样
不过道理一样
把你的照着这个改一下就行了
[解决办法]
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
[解决办法]
兴剑,今天有点空闲,我来帮你修改一下看看!
[解决办法]
这样子你看能不能满足你的要求?
#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';可以更明确点表示字符串结尾~~