在C中,为什么我不能在声明后将字符串赋值给char数组?

Kok*_*kol 10 c arrays string initialization assign

这一直困扰着我.

struct person {
       char name[15];
       int age;
};
struct person me;
me.name = "nikol";
Run Code Online (Sandbox Code Playgroud)

当我编译时,我收到此错误:

错误:从类型'char*'分配类型'char [15]'时出现不兼容的类型

我错过了一些明显的东西吗?

Ded*_*tor 16

数组是C中的二等公民,他们不支持任务.

char x[] = "This is initialization, not assignment, thus ok.";
Run Code Online (Sandbox Code Playgroud)

这不起作用:

x = "Compilation-error here, tried to assign to an array.";
Run Code Online (Sandbox Code Playgroud)

使用库函数或手动复制每个元素:

#include <string.h>
strcpy(x, "The library-solution to string-assignment.");
Run Code Online (Sandbox Code Playgroud)

  • 我混淆了初始化和分配,抱歉.是的,这解决了,谢谢.我被老师的一个例子引导到了错误的道路上(我现在看错了). (2认同)

Sou*_*osh 6

me.name = "nikol";是错的 !!你需要使用strcpy()

x = "Some String"实际上,当你将静态字符串的起始地址"Some String"放入变量时x.在您的情况下,name是一个静态数组,您不能更改地址.你需要的是将你的字符串复制到已经分配的数组name.为此,使用strcpy().