c - C中如何给列表赋值

标签 c arrays pointers malloc dynamic-memory-allocation

我有这个列表,我正在编写一个函数来要求用户添加信息:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXTAB 40
#define MAXSTR 25

typedef enum {Prob, Impr, Terr, Jail} Type;

typedef struct {
    int pos;
    char name[MAXSTR+1];
    char owner[MAXSTR+1];
    int price;
    Type info;
} Casella;

struct lista {
    Casella Tab;
    struct lista *node;
};

typedef struct lista Lista;

void printElement (Lista *);
void printTab (Lista *);
Lista * initializeTab (Lista *, int);
Lista * addInfo (Lista*);

int main()
{
    Lista *list = NULL;
    int i;

    for (i=0; i<MAXTAB; i++){
        list = initializeTab(list, i);
    }

    printTab(list);

    return 0;
}

void printElement (Lista *l){

    printf("Position: %d\n", l->Tab.pos);

}

void printTab (Lista *l){

    while(l!=NULL){
        printElement(l);
        l=l->node;
    }

}

Lista * initializeTab (Lista *l, int x){

    Lista *newTab = NULL;

    newTab = (Lista*)malloc(sizeof(Lista));

    newTab->Tab.pos = x;
    newTab->node = l;

    return newTab;

}

Lista * addInfo (Lista *l){
    Lista *list = NULL;
    list->Tab.name = (char*)malloc(MAXSTR * sizeof(char));
    return list;
}`

在“addInfo”函数中,我尝试为选项卡名称分配内存,但它告诉我不能为其分配类型数组 char。我的问题是,如何为各种列表元素分配内存?就像我想为 list.name、list.owner、list.pos 等分配内存...然后为它们分配值。

最佳答案

在你的结构定义中

struct {
    int pos;
    char name[MAXSTR+1];   //array
    char owner[MAXSTR+1];  //array
    int price;
    Type info;
} Casella;

nameowner 是数组,它们各自已经有 [MAXSTR+1] 元素。您不需要使用 malloc() 分配内存。只需执行 strcpy()

此外,pos 是一个整数,只需使用 = 赋值即可。这应该足够了。

需要分配内存的地方是list,它是一个指针。有点像

 Lista *list = malloc(sizeof*list);  //and a NULL check later

首先是必需的。

关于c - C中如何给列表赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34810304/

相关文章:

c - 那里有问题,我必须得到真实的类(class)平均分,并写出有多少人在考试中获得 A B C D F 请帮助我?

c - strcat_s 和 char 指针新手问题

c++ - 引用临时与指向临时及其生命周期的指针

c++ - 为矩阵迭代器在+ =之间集成一个条件(可能对数学有挑战)

c - 如何在仍显示屏幕的同时将所有输出保存到屏幕上?

c - 不兼容指针赋值的技术合法性

javascript - 检查对象数组是否包含对象

javascript - 在数组中查找 indexOf 值

c++ - C++ 中数组的静态边界检查

c - c中的链接字符串列表