[“{”标记前的预期表达式出错

[Error expected expression before '{' token

提问人:Keneth Cayas 提问时间:11/6/2020 最后编辑:Vlad from MoscowKeneth Cayas 更新时间:11/6/2020 访问量:1268

问:

你好,我是 C 语言的初学者,我不知道为什么 每次尝试编译时,我都会在此行上收到此错误

    CURRENT->name = {'L','O','U','D','A'};

这是我的整个代码

#include <stdio.h>
#include <stdlib.h>

struct node{
char name[15];
int age;
struct node *next;
}TEMPLATE;


int main()
{
    struct node *HEAD;      
    HEAD = (struct node*) malloc (sizeof(struct node)); 
    
    
    struct node *TAIL;
    TAIL = (struct node*) malloc (sizeof(struct node));
 
    
    struct node *CURRENT;
    CURRENT = (struct node*) malloc (sizeof(struct node));
    CURRENT->name = {'L','O','U','D','A'};
    CURRENT->age = 24;
    CURRENT->next = NULL;
    return 0;
}
结构 体初始化 C-strings 赋值运算符

评论

0赞 kiran Biradar 11/6/2020
用。strcpystrcpy(CURRENT->name, "LOUDA")
2赞 Gerhardh 11/6/2020
此语法仅在变量的初始化中有效。它不能用于 assigment。

答:

0赞 Vlad from Moscow 11/6/2020 #1

您只能将带支撑的列表用作声明的初始值设定项。

但是这个

CURRENT->name = {'L','O','U','D','A'}; 

不是声明,而是表达式语句

你可以写

#include <string.h>

//...

strcpy( CURRENT->name, "LOUDA" ); 

注意全局变量 TEMPLATE 的声明

struct node{
char name[15];
int age;
struct node *next;
}TEMPLATE;

没有意义。所以声明结构

struct node{
char name[15];
int age;
struct node *next;
};

并动态分配节点,如本语句所示

 HEAD = (struct node*) malloc (sizeof(struct node))