| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 382 人关注过本帖, 1 人收藏
标题:请各位帅哥美女帮忙看下程序哪有问题?
只看楼主 加入收藏
daring_star
Rank: 2
等 级:论坛游民
帖 子:38
专家分:65
注 册:2013-10-20
结帖率:100%
收藏(1)
 问题点数:0 回复次数:4 
请各位帅哥美女帮忙看下程序哪有问题?
我想用指针来复制字符串,就是把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
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
1: main函数头不规范
2: 没有free ()
3: gets容易出问题,最好不用
4: 你一阵++后两指针指哪去了?


莫问前尘有愧,但求今生无悔
2013-12-04 00:16
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
回复 楼主 daring_star
现在的pstr2已经指向了'\0'

[ 本帖最后由 kajj_0321 于 2013-12-4 09:10 编辑 ]

kajj->1314 努力每一天。
2013-12-04 09:06
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:0 
回复 楼主 daring_star
程序代码:
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char *pstr1,*pstr2,*pstr3;

    pstr1 = (char *)malloc(100);
    pstr2 = (char *)malloc(100);
    pstr3 =pstr2;\\ 保存下之前pstr2的首地址

    printf("%p",pstr2);
   
    printf("请输入需要复制的字符串\n");

    gets(pstr1);

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

}

kajj->1314 努力每一天。
2013-12-04 09:08
逆风而前
Rank: 7Rank: 7Rank: 7
来 自:福建
等 级:黑侠
威 望:7
帖 子:193
专家分:567
注 册:2013-2-14
收藏
得分:0 
#include <stdio.h>
#include <stdlib.h>
void main()
{
    char *pstr1,*pstr2;
    char *temp;
    pstr1=(char *)malloc(100*sizeof(char));
    pstr2=(char *)malloc(100*sizeof(char));
   
    printf("请输入需要复制的字符串\n");

    gets(pstr1);
    temp=pstr2;
    while(1)
    {
        if(*pstr1=='\0')
            break;
        *pstr2=*pstr1;
        pstr2++;
        pstr1++;
    }
    *pstr2='\0';
    printf("%s\n",temp);
}
楼上的正确.
刚刚调试了一下,发现当你复制完后pstr2已经移到末尾了
所以你得把指针刚开始的地址保存下来.
2013-12-04 22:36
快速回复:请各位帅哥美女帮忙看下程序哪有问题?
数据加载中...
 
   



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

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