lengfeng49 发表于 2020-5-4 21:06:54

C程序

# include <stdio.h>

void main ()
{
        char a[] = "Fishc.com is a good web site!", b, *p1, *p2;

        int i;

        p1 = a;
        p2 = b;

        for (; *p1 != '\0'; p1++, p2++)
        {
           *p2 = *p1;
        }
        *p2 = '\0';
   

    printf ("%s\n",p2);
}

结果运行不出来,为什么?
# include <stdio.h>

void main ()
{
        char a[] = "Fishc.com is a good web site!", b, *p1, *p2;

        int i;

        p1 = a;
        p2 = b;

        for (; *p1 != '\0'; p1++, p2++)
        {
           *p2 = *p1;
        }
        *p2 = '\0';
   
    p2 = b;
    printf ("%s\n",p2);
}
改成这样就好了,为什么要加    p2 = b;   求教!!!

qiuyouzhi 发表于 2020-5-4 21:09:08

你得用一个指针指向待复制的字符串吧

lengfeng49 发表于 2020-5-4 21:10:59

qiuyouzhi 发表于 2020-5-4 21:09
你得用一个指针指向待复制的字符串吧

for语句之前已经有了p2 = b;了

qiuyouzhi 发表于 2020-5-4 21:14:12

lengfeng49 发表于 2020-5-4 21:10
for语句之前已经有了p2 = b;了

哦,你说最后那个啊
你得把指针放到最前面,不然指针指向的是最后一个,
就不会打印整个字符串了

liuzhengyuan 发表于 2020-5-4 21:14:45

本帖最后由 liuzhengyuan 于 2020-5-4 21:15 编辑

lengfeng49 发表于 2020-5-4 21:10
for语句之前已经有了p2 = b;了

因为在for循环中 p2已经被改变了

lengfeng49 发表于 2020-5-4 21:34:22

liuzhengyuan 发表于 2020-5-4 21:14
因为在for循环中 p2已经被改变了

明白了,十分感谢!

lengfeng49 发表于 2020-5-4 21:35:05

qiuyouzhi 发表于 2020-5-4 21:14
哦,你说最后那个啊
你得把指针放到最前面,不然指针指向的是最后一个,
就不会打印整个字符串了

明白了,十分感谢!

qiuyouzhi 发表于 2020-5-4 21:57:58

lengfeng49 发表于 2020-5-4 21:35
明白了,十分感谢!

那就设个最佳答案吧~
页: [1]
查看完整版本: C程序