| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2952 人关注过本帖
标题:字符串插入空格的问题
只看楼主 加入收藏
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
结帖率:99.34%
收藏
已结贴  问题点数:14 回复次数:4 
字符串插入空格的问题
输入一串字符 运行程序输出结果为:俩俩字符间加入一个空格。
我的代码如下:
#include <stdio.h>
#include <string.h>
int  main()
{
    void  spac(char[]);
    char  s1[80];
    printf("input s1:");
    gets(s1);
    spac(s1);
    printf("%s\n", s1);
    return 0;
}

void  spac(char s1[])
{
    int i;
    for(i = 0; i < (int)strlen(s1); i++)
    {
        s1[2 * i] = s1[i];
        s1[2 * i - 1] = ' ';
    }
}
输出结果是什么都没有,如果把for(i = 0; i < (int)strlen(s1); i++)改为for(i = (int)strlen(s1); i > 0; i--)
则有正确的结果。不知道为什么,谁能解释下。



[ 本帖最后由 有容就大 于 2011-12-14 13:53 编辑 ]
搜索更多相关主题的帖子: 运行程序 include return 字符串 
2011-12-14 13:29
于祥
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:5
帖 子:1047
专家分:4132
注 册:2011-4-24
收藏
得分:4 
for(i = 0; i < (int)strlen(s1); i++)
    {
        s1[2 * i] = s1[i];
        s1[2 * i - 1] = ' ';
    }
如果i=0;s1[2 * i] = s1[i];s1[2 * i - 1] = ' ';中2*i还是i,2*i-1=-1就是你的不对了!

最基础的往往是你最容易忽略的!
2011-12-14 13:42
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 2楼 于祥
但是for(i = (int)strlen(s1); i >= 0; i--)
一样能得到正确结果,貌似i等于-1对程序没有影响。

梅尚程荀
马谭杨奚







                                                       
2011-12-14 13:52
hnuhsg1226
Rank: 9Rank: 9Rank: 9
来 自:中国
等 级:蜘蛛侠
威 望:2
帖 子:314
专家分:1314
注 册:2011-3-27
收藏
得分:10 
你写的逻辑还不清楚,如果从字符串的头开始,例如:s1[80] = "sad",经过第二次for循环之后,第一个字符为s,第二个字符为空格,第三个字符变成了a,本来第二次for循环已经对字符a进行了处理,到了第三次for循环的时候字符a成了第三个字符,就成了要处理的字符。也就是说,你在依次做for循环,你的字符串也在依次增加,那些不该处理的字符也出现在你的字符串里,最终结果就是死循环。
为什么用i--会成功呢,就是它避免了上述情况,只做了strlen(s1)次for循环。

我的地盘
2011-12-14 14:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 hnuhsg1226
谢谢 !明白了。

梅尚程荀
马谭杨奚







                                                       
2011-12-14 16:21
快速回复:字符串插入空格的问题
数据加载中...
 
   



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

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