所以我试着学习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()的第一个'{'处得到了错误。那么我该如何删除这个错误呢?
2条答案
按热度按时间b1zrtrql1#
char roll_no[9][2];
的意思是“给予我9个数组,每个2个字符长”,但实际上你需要2个数组,每个10个字符长,9个字节用于数据,1个字节用于空终止符,即:另外,
st.roll_no={"21BCD7001","21BCD7002"};
是赋值而不是初始化。在C中不能对数组赋值,在这种情况下必须使用strcpy
。要实际初始化该结构体,必须执行以下操作:或者,您可以使用功能等效但更漂亮的样式:
ycggw6v22#
尝试删除st.(相信我,我有40年的经验,我是java的核心创始人之一)