C初始化struct数组的char数组

Pro*_*Pus 0 c arrays struct char

我无法理解如何在数组结构中初始化char数组.我写了这段代码:

typedef struct tomo
{
    char titolo[100];
    char autore[100];
    int anno_pubblicazione;
    float prezzo;
} t_libro;

main(){
    t_libro biblio[2];
    biblio[0] = {"Guida al C", "Fabrizio Ciacchi", 2003, 45.2};
    biblio[1] = {"Harry Potter e la Pietra Filosofale", "J.K.Rowling", 2003, 12.5};
}
Run Code Online (Sandbox Code Playgroud)

但是当我编译时,它告诉我在'{'表达式之前预期.我怎么解决它?这些char数组给了我很多问题......

PS我也试过用

biblio[0].titolo = "Guida al C";
Run Code Online (Sandbox Code Playgroud)

并以这种方式对于struct的其他字段,但也以这种方式我有一个错误.

Dav*_*nan 9

biblio[0] = {"Guida al C", "Fabrizio Ciacchi", 2003, 45.2};
Run Code Online (Sandbox Code Playgroud)

那不是初始化.这是一个简单的任务.您只能在初始化中使用初始化语法.它看起来像这样:

t_libro biblio[] = {
  {"Guida al C", "Fabrizio Ciacchi", 2003, 45.2},
  {"Harry Potter e la Pietra Filosofale", "J.K.Rowling", 2003, 12.5}
};
Run Code Online (Sandbox Code Playgroud)

你试图写

biblio[0].titolo = "Guida al C";
Run Code Online (Sandbox Code Playgroud)

失败,因为您无法分配给字符数组.您必须初始化它们,或使用类似的功能strcpy.

你的main声明也是错误的.它应该是

int main(void)
Run Code Online (Sandbox Code Playgroud)

  • 有很多糟糕的教学正在进行中.`main()`可能适用于您的编译器,但它是非标准的.你的老师应该教你`int main(void)`或`int main(int argc,char*argv [])`. (5认同)
  • 它可能总是适用于您的编译器.但这是错的. (2认同)