繁体   English   中英

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

[英]i am trying to copy a string in c using 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

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

因此,在行之后:

*pt1='\0';

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

您的代码中有一个错字:

char *pt0 =ch;

应该是:

char *pt0 =ch0;

您的编译器应注意,但为保持一致性,最好在此处进行更正。 除此之外,布鲁塞格的答案是正确的。

在您的代码中,您要递增指针ptr1 ,最后分配赋值“ NULL” 因此, ptr1不再保存ch1字符串。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM