| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 480 人关注过本帖
标题:数据丢失问题
只看楼主 加入收藏
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:8 
数据丢失问题
程序功能:把字符串中的所有字符左移一个位置,第一个字符移到最后
但是运行后第一个字符不见了,应该出现在最后一位的。我百思不得其解,请各位帮忙看看。
程序代码:
#include <stdio.h>
void chg(char *s);
main()
{
    char a[30],*p;
    p=a;
    printf("请输入一个长度小于30的字符串:");
    gets (a);
    chg(p);
    printf("移动后:%s",p);
    printf("\n");
}
void chg(char *s)
{
    char c;
    c=*s;
    for(;*s!='\0';s++)
    {
        *s=*(s+1);
        printf("\n%c\n",*s);                //这是我为了调试程序加的
    }
    *s=c;
    printf("\n%c\n",*s);                    //这是我为了调试程序加的
    *(s+1)='\0';

 }


搜索更多相关主题的帖子: 丢失 字符串 
2013-02-08 16:39
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
#include <stdio.h>
void chg(char *s);
main()
{
    char a[30],*p;
    p=a;
    printf("请输入一个长度小于30的字符串:");
    gets (a);
    chg(p);
    printf("移动后:%s",p);
    printf("\n");
}
void chg(char *s)
{
    char c;
    c=*s;
    for(;*s!='\0';s++)
    {
        *s=*(s+1);
    }
    s--;
    *s=c;
    *(s+1)='\0';
}

唉,初三要停停了,舍不得啊。。
2013-02-08 16:51
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
程序代码:
#include <stdio.h>
void chg(char *s);
main()
{
    char a[30],*p;
    p=a;
    printf("请输入一个长度小于30的字符串:");
    gets (a);
    chg(p);
    printf("移动后:%s",p);
    printf("\n");
}
void chg(char *s)
{
    char c;
    c=*s;
    for(;*s!='\0';s++)
    {
        *s=*(s+1);
    }
    s--;
    *s=c;
    *(s+1)='\0';
}

唉,初三要停停了,舍不得啊。。
2013-02-08 16:52
dsl975708035
Rank: 3Rank: 3
来 自:平凉
等 级:论坛游侠
帖 子:101
专家分:152
注 册:2012-8-3
收藏
得分:0 
晕,用错号了,我待会用心灯甚亮回帖,给那个号给分

唉,初三要停停了,舍不得啊。。
2013-02-08 16:53
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
回复 3楼 dsl975708035
呃.....问题是解决了,但是你能不能讲一下错误原因,为什么加一句s--就好了。
2013-02-08 16:54
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:10 
注意s的指向
for(;*s!='\0';s++)
{
        *s=*(s+1);
        printf("\n%c\n",*s);
}
假如我输入123,字符串s则应该是"123\0",循环后变成"23\0\0",且s指向第二个\0,你在用*s=c,字符串变成"23\01",输出自然就是23

[ 本帖最后由 心灯甚亮 于 2013-2-8 17:00 编辑 ]
2013-02-08 16:55
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
哦,谢谢了,分给你了。
2013-02-08 16:57
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
收藏
得分:0 
呃,怎么给分啊?
2013-02-08 16:58
心灯甚亮
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:441
专家分:996
注 册:2013-1-29
收藏
得分:0 
结贴啊。。。。
2013-02-08 17:01
快速回复:数据丢失问题
数据加载中...
 
   



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

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