我试图用指针复制c中的字符串

我试图用指针复制c中的字符串,c,pointers,C,Pointers,在我看来,您只需重置pt1。在复制循环之后,它指向ch1数组中字符串的末尾 因此,在这一行之后: output: hello value of ch1 =hello pointer pt1 value= \\garbage value pt1指向ch1中字符串的末尾。所以,要打印出来,您需要将其重置回ch1在我看来,您只需要重置pt1。在复制循环之后,它指向ch1数组中字符串的末尾 因此,在这一行之后: output: hello value of ch1 =hello pointer pt1

在我看来,您只需重置
pt1
。在复制循环之后,它指向
ch1
数组中字符串的末尾

因此,在这一行之后:

output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value

pt1
指向
ch1
中字符串的末尾。所以,要打印出来,您需要将其重置回
ch1

在我看来,您只需要重置
pt1
。在复制循环之后,它指向
ch1
数组中字符串的末尾

因此,在这一行之后:

output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value

pt1
指向
ch1
中字符串的末尾。因此,要打印出来,您需要将其重置回
ch1

您的代码中有一个输入错误:

*pt1='\0';
或许应该是:

char *pt0 =ch;

您的编译器应该注意到这一点,但为了保持一致性,也许在这里更正它会更好。除此之外,bruceg的答案是正确的。

您的代码中有一个输入错误:

*pt1='\0';
或许应该是:

char *pt0 =ch;

您的编译器应该注意到这一点,但为了保持一致性,也许在这里更正它会更好。除此之外,bruceg的答案是正确的。

在您的代码中,您将递增指针ptr1,然后至少将赋值“NULL”。因此,ptr1不再持有ch1字符串


为了更好地理解,您可以打印ch1ptr1的地址。您将更好地理解代码中的,您将递增指针ptr1,然后再将赋值“NULL”。因此,ptr1不再持有ch1字符串


为了更好地理解,您可以打印ch1ptr1的地址。您将更好地理解

请花一些时间正确地缩进/分离代码。复制后,
pt1
指向
ch1[5]
,其值为
\0
。OT:
main()
返回
int
not
void
。添加pt1=ch;在*pt1='\0'之后;将for循环替换为printf(“%s”,ch1);“垃圾价值”是什么意思?我在gcc c99上运行了您的代码(经过一些小的修改),但它基本上没有打印任何内容(嗯,打印了“/0”字符,也称为ascci 0)。请花一些时间正确地缩进/分离代码。复制后,
pt1
指向
ch1[5]
,其值为
\0
。OT:
main()
返回
int
not
void
。添加pt1=ch;在*pt1='\0'之后;将for循环替换为printf(“%s”,ch1);“垃圾价值”是什么意思?我在gcc c99上运行了您的代码(经过一些小的修改),它基本上没有打印任何内容(好吧,打印了“/0”字符,也称为ascci 0)