У меня есть этот список, и я пишу функцию, чтобы попросить пользователя, чтобы добавить информацию:Как присвоить значения списка в C
#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», я стараюсь выделить памяти для имени вкладки, но он говорит мне, что я не могу назначить массив массива типов. Мой вопрос: как мне выделить память для различных элементов списка? Как я хочу выделить память для list.name, then list.owner, list.pos и т. Д. ... и затем присваивать им значения.
Используйте указатель, а не массив, для переменной, которую нужно назначить. – MikeCAT
[Пожалуйста, просмотрите эту дискуссию о том, почему бы не использовать возвращаемое значение 'malloc()' и family в 'C'.] (Http://stackoverflow.com/q/605845/2173917). –