char ch0[10] = "hello";
char ch1[10];

void main(){
    clrscr();
    char *pt0 = ch0;
    char *pt1 = ch1;
    puts(pt0);

    while(*pt0 != '\0')
    {
        *pt1++ = *pt0++;
    }
    *pt1 = '\0';

    printf("value of ch1 =");
    for(int i = 0; i < sizeof(ch1); i++){
        printf("%c",ch1[i]); // prints value correctly
    }

    putchar('\n');
    printf("pointer pt1 value = %c",*pt1); // gives garbage value
    getch();
}

指针pt1值不可访问,但是ch1指向正确的值。
如何访问pt1?
我不擅长指针只能解释我的工作场景
output:
hello
value of ch1 =hello
pointer pt1 value= \\garbage value

最佳答案

在我看来,你只需要重置pt1。复制循环之后,它指向ch1数组中字符串的结尾。
所以,在电话之后:

*pt1='\0';

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

关于c - 我正在尝试使用指针在c中复制字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32472767/

10-12 16:10