繁体   English   中英

如何从char *的地址获取字符串?

[英]How do I get string from the address of char*?

char *p = "cat";
char a = *p;
printf("%c", &a);

上面的代码不起作用。 如何从指针 *p 获取字符串数据“cat”并将其存储在 char a 中? 语句 'char *p = "cat";' 不应该改变。

代码中的指针 p 指向字符串的第一个值 c。 因此,当您将 p 处的值分配给 a 时,您将获得存储在 a 中的字符“c”。 但是你在代码的最后一行写了 &a ,它指的是 a 的地址,这将是一个垃圾值,不会给出任何结果。 或者,如果你写 *p 或 a 而不是 &a 你会得到'c'作为结果。

如上:一个字符只能存储一个字符。 字符串是以'\\0'结尾的字符数组。 所以循环遍历字符串并恢复字符,直到找到终止 '\\0' 。

#include <stdio.h>

int main ()
{
    char *p = "cat";

    int i = 0; char a[100];

    while (*p != '\0')
    {
        a[i] = *p;
        i ++; 
        p += 1;
    }
    a[i] = '\0';

    printf("%s\n", a);

    return 0;
}

输出是:猫

暂无
暂无

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

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