簡體   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