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

标签 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

最佳答案

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

所以,在行之后:

*pt1='\0';

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

关于c - 我正在尝试使用指针在 c 中复制一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472767/

相关文章:

c - HWUT:命令行参数

c - 我自己的打印屏幕键

c++ - 使用指针将一个 char 数组添加到另一个

c - 赋值从指针目标类型中丢弃 'volatile' 限定符

c - C中的内存分配

c - execv()系统调用中一段代码的含义

c - 对象在 C 中返回后返回垃圾值

c - 如何为 android jni 编译 Fluidsynth

c++ - 堆栈构建程序中的两个问题

c - 我在一个函数中将值添加到 C 数组中,但在后面的函数中数组仍然为空,这是怎么回事?