标题:[求助]删多余字符问题...
只看楼主
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
 问题点数:0 回复次数:4 
[求助]删多余字符问题...

请教: 我写了一个,感觉好象思路不对,请指点好的方法! 多谢!!!
若再把一些Tab键(缩进)改为一个空格,应该怎么写?试了好多次都不行。

//要求:编一函数删除字符串中多余的空格 ,要求函数原型为 void delblank(char string[]);

void delbk(char *s)
{
int i,j=0;
char t[N];
for(i=0;s[i];i++)
{
if(s[i]==' '&&s[i+1]==' ') {t[j]=s[i];continue;} //这样好吗?
if(s[i]) t[j++]=s[i];
}
t[j]='\0';
strcpy(s,t);
}

搜索更多相关主题的帖子: 字符 
2006-08-06 19:02
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 

for(i=0;s[i];i++)
{
if(s[i]==' '&&s[i+1]==' ') {t[j]=s[i];continue;} //这样好吗?
if(s[i]) t[j++]=s[i];
}

循环的条件跟s[i+1]明显有矛盾,s[i+1]在最后访问不可预知的存储单元,这是错误的。
虽然从结果来讲,应该没多大问题。
有个老潭的算法,应该不错,
  int i,j,k ;
char c;
char t[N];
i=j=k=0 ;
while(c=s[j++])
{

if(c==' ')
{
if(i==0)

{
    sprintf(t+k++,"%c",c);
i=1 ;
}

  }
else
{
sprintf(t+k++,"%c",c);
i=0 ;
}
}
t[j]='\0';
strcpy(s,t);


对不礼貌的女生收钱......
2006-08-06 19:53
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
得分:0 
谢谢斑斑!我先理解一下...

再把一些Tab键(缩进)改为一个空格,应该怎么写?帮我大概讲一下把.

Do people want thick road ...
2006-08-06 20:20
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
遇到Tab键,接收时直接改为空格.
if(c==9)c=' ';

倚天照海花无数,流水高山心自知。
2006-08-06 20:58
haroldi
Rank: 1
等 级:新手上路
帖 子:158
专家分:0
注 册:2006-7-22
得分:0 
明白了,多谢两位!
这样就行了:
void delbk(char *s)
{
int i,j=0,flag=0;
char t[N];
for(i=0;s[i];i++)
{
if(s[i]=='\t') s[i]=' ';
if(s[i]==' ')
{
if(!flag)
{t[j++]=s[i];flag=1;}
}
else {t[j++]=s[i];flag=0;}
}
t[j]='\0';
strcpy(s,t);
}

Do people want thick road ...
2006-08-06 21:37



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-82452-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.665039 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved