| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1006 人关注过本帖
标题:用指针间接赋值方法拷贝字符串为什么会出错?
只看楼主 加入收藏
观海听潮
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2016-8-28
结帖率:50%
收藏
已结贴  问题点数:18 回复次数:3 
用指针间接赋值方法拷贝字符串为什么会出错?

//为什么在运行下面这个程序时,编译可以通过,但是程序会崩溃掉?
void main()
{
    char from[128];
    char to[128] = { 0 };
   
    char *p1 = from;
    char *p2 = to;

    strcpy(from, "123234dsfdsf");
    while(p1 != '\0')
    {
        *p2 = *p1;
        p2++;
        p1++;
    }
    printf("to: %s\n", from);

}
2016-10-03 18:05
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1745
专家分:3216
注 册:2015-12-2
收藏
得分:0 
是while(*p1 != '\0')吧。
2016-10-03 18:37
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:9 
以下是引用观海听潮在2016-10-3 18:05:25的发言:


//为什么在运行下面这个程序时,编译可以通过,但是程序会崩溃掉?
void main()
{
    char from[128];
    char to[128] = { 0 };
   
    char *p1 = from;
    char *p2 = to;

    strcpy(from, "123234dsfdsf");
    printf("%p\t",&p1);
    printf("%p\t",&p2);
    printf("%p\t",p1);
    printf("%p\n",p2);
    while(p1 != '\0')``//这里是死循环,p1改成*p1
    {
        *p2 = *p1;
        p2++;
        p1++;
    }
    printf("to: %s\n", from);
    printf("%p\t",&p1);
    printf("%p\t",&p2);
    printf("%p\t",p1);
    printf("%p\n",p2);

}
2016-10-03 19:24
观海听潮
Rank: 1
等 级:新手上路
帖 子:14
专家分:5
注 册:2016-8-28
收藏
得分:0 
嗯,十分感谢,看来我还是太菜了。。。
2016-10-03 21:22
快速回复:用指针间接赋值方法拷贝字符串为什么会出错?
数据加载中...
 
   



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

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