2017-10-21 109 views
1

我試圖分配一個字符串在C值,但對我來說不工作... 這是,什麼我試圖做的:值分配給在C字符數組(字符串)

#include <stdio.h> 
#include <string.h> 
int main() 
{ 
char k[25]; 
k == "Dennis" 
printf("My Name is %s", k); 
} 

樣本輸出是:我的名字是丹尼斯

不過,我收到了一個警告: 警告:不同的指針類型的比較缺乏投滿足K ==「丹尼斯」;

我試圖找到這個網站上的解決方案,也沒有找到一個,它是在C

值分配給一個字符數組(字符串)同樣的錯誤還試圖初始化我的字符作爲

char *k[25]; 

仍然沒有工作...

+0

您發佈的代碼1)包含語法錯誤,並且2)不會產生您聲稱它的警告。 – melpomene

+0

'=='是比較,不是賦值。 '='是賦值,但不能分配給數組。 – melpomene

+0

看一下庫函數strcpy,strncpy – CplusPuzzle

回答

0
  1. 你確實是在這裏做一個比較:k == "Dennis"。所以編譯器正確地警告你。

  2. 你可能的意思是k = "Dennis";(修復那裏缺少的分號)。但那也行不通。因爲在C中數組不是可修改的左值。

所以你可以初始化數組:

char k[25] = "Dennis"; 

,或者使用strcpy複製:

strcpy(k, "Dennis"); 

如果你確實沒有必要爲數組,你可以簡單地使用指針t帽子指向字符串文字。以下是有效的:

char *k; 
k = "Dennis"; 
printf("My Name is %s", k); 
+0

警告是關於不同的指針類型,但所討論的兩種類型都是'char *'。 – melpomene

+0

非常感謝!你是我的英雄!這工作非常好。 – Ayibogan

+0

@melpomene也許OP在問題中發佈了「錯誤」的代碼。但問題的關鍵仍然是一樣的。 – usr