将字符串分配给C中的结构中的元素

Kre*_*ade 3 c string structure

我有这个结构:

typedef struct SM_DB
{
    LIST_TYPE           link;
    char                name[SM_NAME_SIZE];
} SM_DB_TYPE;
Run Code Online (Sandbox Code Playgroud)

我想为其'name'分配一个字符串.我是这样做的:

SM_DB_TYPE one;
one.name = "Alpha";
Run Code Online (Sandbox Code Playgroud)

但是,编译后我得到一个错误:"错误C2106:'=':左操作数必须是l值".我希望这是相当明显的.有谁知道我做错了什么?

谢谢

Kei*_*ler 6

假设SM_NAME_SIZE足够大,您可以strcpy像这样使用:

strcpy(one.name, "Alpha");

在执行 strcpy 之前,请确保您的目的地有足够的空间来容纳字符串,您将获得缓冲区溢出。

如果你想安全地玩,你可以这样做

if(!(one.name = malloc(strlen("Alpha") + 1))) //+1 is to make room for the NULL char that terminates C strings
{
      //allocation failed
}
strcpy(one.name, "Alpha");  //note that '\0' is not included with Alpha, it is handled by strcpy
//do whatever with one.name
free(one.name) //release space previously allocated
Run Code Online (Sandbox Code Playgroud)

one.name如果使用 malloc,请确保您空闲,以免浪费内存。


Sac*_*tre 5

您可以在声明字符串时仅为字符串赋值.您以后不能使用分配它=.

你必须使用strcpy()功能.