2017-10-21 209 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