[英]I am trying to compare string literals and I want to remove repeated literals I want to do it without using POINTERS.,
[英]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字符串。
為了更好地理解,您可以同時打印ch1和ptr1的地址。 您會更好地了解
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.