错误:在C中初始化二维结构变量时需要表达式

72qzrwbm  于 2023-01-29  发布在  其他
关注(0)|答案(2)|浏览(117)

所以我试着学习C语言中的结构,并尝试在结构中使用2D字符数组。当我尝试在main中初始化它时,我得到一个错误消息“error:应为表达式”“。

struct students
{
    char roll_no[9][2];
}st;
int main()
{
    st.roll_no={"21BCD7001","21BCD7002"}; //this is where I get the error
}

当我试图编译这个函数时,我在main()的第一个'{'处得到了错误。那么我该如何删除这个错误呢?

b1zrtrql

b1zrtrql1#

char roll_no[9][2];的意思是“给予我9个数组,每个2个字符长”,但实际上你需要2个数组,每个10个字符长,9个字节用于数据,1个字节用于空终止符,即:

char roll_no [2][10];

另外,st.roll_no={"21BCD7001","21BCD7002"};是赋值而不是初始化。在C中不能对数组赋值,在这种情况下必须使用strcpy。要实际初始化该结构体,必须执行以下操作:

struct students
{
    char roll_no[2][10];
};

int main()
{
  struct students st = {"21BCD7001","21BCD7002"}; 
}

或者,您可以使用功能等效但更漂亮的样式:

struct students st = 
{ 
  .roll_no = {"21BCD7001","21BCD7002"} 
};
ycggw6v2

ycggw6v22#

尝试删除st.(相信我,我有40年的经验,我是java的核心创始人之一)

相关问题