在C语言中给字符数组(字符串)赋值

3

我试图在C语言中给一个字符串赋值,但是似乎不起作用...这就是我尝试做的:

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

样本输出将是:我的名字是Dennis

然而,我收到一个警告:

警告:比较不同指针类型缺少强制转换 k == "Dennis";

我尝试在这个网站上找到解决方案,但是没有找到一个相同的错误,它涉及在C语言中给char数组(字符串)赋值。

还尝试了初始化我的char:

  char *k[25];

仍然无法正常工作...


你发布的代码1)包含语法错误,2)并没有产生你所声称的警告。 - melpomene
== 是比较运算符,不是赋值运算符。= 是赋值运算符,但你不能对数组进行赋值。 - melpomene
看一下库函数strcpy、strncpy。 - CplusPuzzle
也许先把代码编译好再说! - Ed Heal
1个回答

6
  1. 您确实在这里进行了比较:k ==“Dennis”。因此,编译器正确地发出了警告。

  2. 您可能想要 k =“Dennis”;(修复了缺少的分号)。但这也行不通。因为在C中,数组不是可修改的lvalue。

因此,您可以初始化数组:

char k[25] = "Dennis";

或者使用strcpy进行复制:

strcpy(k, "Dennis");

如果您实际上不需要一个数组,您可以使用指向字符串字面值的指针。以下是有效的代码:
char *k;
k = "Dennis";
printf("My Name is %s", k);

警告是关于不同的指针类型,但是问题中涉及的两种类型都是 char * - melpomene
非常感谢!你是我的英雄!这个完美地运行。 - Ayibogan
@melpomene 或许 OP 在问题中发布了“错误”的代码。但问题的关键仍然相同。 - P.P

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接