帮小弟我调试一下,关于删除字符串空格
帮我调试一下,关于删除字符串空格.
我调试了很久,好象只能去掉一个空格,两个空格就无法准确全部去掉
------解决方案--------------------
前几天还回了一个帖子呢
- 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';可以更明确点表示字符串结尾~~