| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 392 人关注过本帖
标题:请各位帅哥美女帮忙看下程序哪有问题?
只看楼主 加入收藏
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
请各位帅哥美女帮忙看下程序哪有问题?
我想用指针来复制字符串,就是把pstr1中的值复制到pstr2中,可为什么我运行程序后pstr2输出结果是空的?求指点。
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char *pstr1,*pstr2;

    pstr1 = (char *)malloc(100);
    pstr2 = (char *)malloc(100);
   
    printf("请输入需要复制的字符串\n");

    gets(pstr1);

    while(1)
    {
        if(*pstr1 == '\0')
            break;
        *(pstr2++) = *(pstr1++);
    }
    *pstr2 = '\0';
    printf("%s\n",pstr2);
}
搜索更多相关主题的帖子: 运行程序 帅哥美女 include 字符串 
2013-12-03 16:32
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:7 
执行完了以后pstr2是几?

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-12-03 16:41
caimingri
Rank: 1
等 级:新手上路
帖 子:3
专家分:8
注 册:2013-11-2
收藏
得分:7 
你的指针飞了-----你是想让指针飞一会儿吧
2013-12-03 16:44
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:7 
你把指针位置都偏移到末尾去了   当然输出一片空白
可以这样改
#include <stdio.h>
#include <stdlib.h>
void main()
{
    int i=0;
    char *pstr1,*pstr2;

    pstr1 = (char *)malloc(100);
    pstr2 = (char *)malloc(100);
   
    printf("请输入需要复制的字符串\n");

    gets(pstr1);

    for(i=0;*(pstr1+i)!='\0';i++)         //红色区域为改动部分,你应该懂的,就不多说了
    {
        *(pstr2+i) = *(pstr1+i);        //主要就是 pstr++    pstr+i  的区别
    }
    *(pstr2+i) = '\0';
    printf("%s\n",pstr2);
}

三十年河东,三十年河西,莫欺少年穷!
2013-12-03 16:45
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
收藏
得分:0 
谢谢各位!!!

一如大学深似海,从此节操是路人。
2013-12-03 17:16
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
这个问题今天第二个人发帖问了

总有那身价贱的人给作业贴回复完整的代码
2013-12-03 17:23
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
收藏
得分:0 
我明白了!!!谢谢各位!不过还有个小问题,就是为什么后面不能释放内存?
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char *pstr1,*pstr2,*pstr3;

    pstr1 = (char *)malloc(100);
    pstr2 = (char *)malloc(100);
    pstr3 = pstr2;
    if(!pstr1)
        return;
    if(!pstr2)
        return;
    printf("请输入需要复制的字符串\n");

    gets(pstr1);

    while(1)
    {
        if(*pstr1 == '\0')
            break;
        *(pstr2++) = *(pstr1++);
    }
    *pstr2 = '\0';
    pstr2 = pstr3;
    printf("%s\n",pstr2);
    if(pstr1)
    free(pstr1);
    if(pstr2)
    free(pstr2);

}

一如大学深似海,从此节操是路人。
2013-12-03 17:30
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
收藏
得分:0 
我明白了!!!谢谢各位!不过还有个小问题,就是为什么后面不能释放内存?
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char *pstr1,*pstr2,*pstr3;

    pstr1 = (char *)malloc(100);
    pstr2 = (char *)malloc(100);
    pstr3 = pstr2;
    if(!pstr1)
        return;
    if(!pstr2)
        return;
    printf("请输入需要复制的字符串\n");

    gets(pstr1);

    while(1)
    {
        if(*pstr1 == '\0')
            break;
        *(pstr2++) = *(pstr1++);
    }
    *pstr2 = '\0';
    pstr2 = pstr3;
    printf("%s\n",pstr2);
    if(pstr1)
    free(pstr1);
    if(pstr2)
    free(pstr2);

}

一如大学深似海,从此节操是路人。
2013-12-03 17:30
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
你说这句不能释放?free(pstr1);  
很明显前一个问题你还没明白

总有那身价贱的人给作业贴回复完整的代码
2013-12-03 17:35
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
收藏
得分:0 
不好意思,我想多了,我知道了

一如大学深似海,从此节操是路人。
2013-12-03 17:59
快速回复:请各位帅哥美女帮忙看下程序哪有问题?
数据加载中...
 
   



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

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