[英]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.