我正在研究队列数据结构。结构是:
struct queue
{
char array[MAX_LENGTH][8];
int back;
};
它旨在存储 7 个字符长的 MAX_LENGTH 字符串列表。 我希望推送 8 个字符的一维数组(好吧,7 个字符和\0,就像结构中的数组一样)。
我有这个推送码:
void push (struct queue *q, char s[]){
q->array[q->back] = s;
}
我认为这可能行得通,但显然行不通。在 cl(.net 的 C/C++)编译器中,出现以下错误:
2.c(29) : error C2106: '=' : left operand must be l-value
gcc 在同一行返回类似的错误(但我忘记了,目前无法访问 gcc)。
我对结构和指针相当陌生,所以可能有一些非常明显的事情我没有做。感谢任何帮助:)
最佳答案
将其更改为:
void push (struct queue *q, char s[])
{
strcpy(q->array[q->back], s);
}
您可以使用 =
在 C 语言中分配结构,但您不能分配数组 - 您必须使用 strcpy/memcpy 来处理此类事情。
关于c - 将一维数组插入 C 中的二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2364101/