| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 502 人关注过本帖
标题:[求助]删多余字符问题...
只看楼主 加入收藏
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
快速回复:[求助]删多余字符问题...
数据加载中...
 
   



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

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