我想了解如何正确地将某个字符串存储到链接列表中。
例如,列表已定义:
typedef struct node {
int code;
char surname[n];
struct node *next;
}Student;
typedef Student *List;
定义正确吗?
还是我应该插入一个指向char的指针?例如char *pc
吗?
问题是如何正确存储姓氏,如果我必须在'code'中插入一个值,这相对简单,因为例如我只是声明了一个指针'aux',然后aux-> code = x,其中x是一个整数。
问题在于如何扫描或如何将一个字符串放入姓氏[n]位置,例如调用一个函数。
例如,创建另一个大小为n的矢量,vet [n]对此进行扫描,然后分配aus->surname = vet[n]
会起作用吗?
另一个信息,也许与第一个问题有关,是否可以将定义到struct中的数组的大小更改为变量?
答案 0 :(得分:0)
n
的定义方式必须是编译时常数。因此-关于问题的最后一部分-n
不能因对象而异,因此对于struct
本身来说是没有意义的。
*surname
和surname[n]
之间的区别在于,您需要使用malloc
为其分配内存,而后者提供每个对象内的内存。两者都会起作用;但是,在两种情况下都无法分配数组:
char* surname;
...
char vec[100];
scanf("%99s",vec);
surname = malloc(strlen(vec)+1);
strcpy(surname,vec);
一旦对象被丢弃,别忘了free
姓。
或:
char surname[100];
...
char vec[100];
scanf("%99s",vec);
strcpy(surname,vec);