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