标题:用指针间接赋值方法拷贝字符串为什么会出错?
只看楼主
观海听潮
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
帖 子:1728
专家分: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-469406-1-1.html




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

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