c - 将一维数组插入 C 中的二维数组

标签 c pointers arrays struct structure

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

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/

相关文章:

在 C 中比较字符串并打印存储的字符串

c - MPI_Recv() 卡住程序,未从 C 中的 MPI_Send() 接收值

c - C 中的上层函数

c - 为堆中的结构元素分配内存?

c - 无法将单个 Char 与 Chars 数组进行比较

比较 if 语句中的指针值

c - 关于C程序char *指针的问题

javascript - JS中agGrid显示二维数组

c - 在 C 中打印数组的元素

ruby - 在一行中创建多个数组