c - 错误: expected expression before ‘{’ token while assigning a character array

标签 c arrays struct compiler-errors initialization

在对象中分配字符数组时出现错误。如何解决此错误?

typedef struct car {
    int id;
    char *name;
    int price;
    char *colors[5];
} car;

int main()
{
    car obj;
    obj.id = 5;
    obj.name = "honda city zx";
    obj.price = 1500;
    obj.colors = {"red", "blue", "black"};   // Line 17

    return 0;
}

错误:

prtemp.c: In function ‘main’:
prtemp.c:17:18: error: expected expression before ‘{’ token
     obj.colors = {"red", "blue", "black"};

最佳答案

数组没有赋值运算符。所以这句话

obj.colors = {"red", "blue", "black"}; 

是无效的。你必须写
obj.colors[0] = "red";
obj.colors[1] = "blue";
obj.colors[2] = "black"; 
obj.colors[3] = NULL;
obj.colors[4] = NULL;

另一种方法是在创建对象时对其进行初始化。
car obj =
{
    5, "honda city zx", price = 1500, {"red", "blue", "black" }
};

或者,您可以使用所谓的指定初始化。
 car obj =
 {
    .id = 5, .name = "honda city zx", .price = 1500, .colors = { "red", "blue", "black" }
 };     

关于c - 错误: expected expression before ‘{’ token while assigning a character array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60148256/

相关文章:

php数组遍历

C -- 在换行符上取消引用

c++ - 在 MATLAB 中解析具有十六进制浮点常量的文件

c - 无限缓冲区 printf - 格式化直接放入流

javascript - 在多个地方使用相同的随机数 (JavaScript)

arrays - 如何将数字数组从 bash 传递到 csh

c - 在文件范围错误处可变修改了 'variable_name'?

ios - 调用协议(protocol)的 mutating 函数生成 "has no member ' functionName'"错误

c - C中的指针问题

c - 如何在 C 中复制字符串并返回其地址,将其分配给指针并打印新字符串?