我正在尝试使用指针复制c中的字符串

时间:2015-09-09 06:54:54

标签: c pointers

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

2 个答案:

答案 0 :(得分:3)

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

所以,在行之后:

*pt1='\0';

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

答案 1 :(得分:0)

在您的代码中,您正在递增指针 ptr1 ,然后将您的分配值&#34; NULL&#34; 。因此 ptr1 不再包含 ch1 字符串。

为了更好地理解,您可以打印 ch1 ptr1 的地址。你会明白的更好