将1-D阵列推入C中的2-D阵列

Mar*_*ugh 3 c arrays struct pointers structure

我正在研究队列数据结构.结构是:

struct queue
{
 char array[MAX_LENGTH][8];
 int back;
};
Run Code Online (Sandbox Code Playgroud)

它旨在存储7个字符长的MAX_LENGTH字符串列表.我希望推出一个包含8个字符的1D数组(好吧,7个字符和\ 0,就像结构中的数组一样).

我有这个推送代码:

void push (struct queue *q, char s[]){
 q->array[q->back] = s;
}
Run Code Online (Sandbox Code Playgroud)

我认为这可能有用,但显然没有.在cl(.net的C/C++)编译器中,我收到以下错误:

2.c(29):错误C2106:'=':左操作数必须是l值

gcc在同一行返回一个类似的错误(但我忘记了,此刻无法访问gcc).

我对结构和指针都很新,所以可能有一些非常明显我没做的事情.感谢任何帮助:)

Pau*_*l R 5

将其更改为:

void push (struct queue *q, char s[])
{
    strcpy(q->array[q->back], s);
}
Run Code Online (Sandbox Code Playgroud)

您可以使用C语言分配结构=但不能分配数组 - 您必须使用strcpy/memcpy来执行此类操作.