在链接列表C中插入字符串或字符

时间:2018-12-02 20:48:54

标签: c string function linked-list char

我想了解如何正确地将某个字符串存储到链接列表中。

例如,列表已定义:

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中的数组的大小更改为变量?

1 个答案:

答案 0 :(得分:0)

n的定义方式必须是编译时常数。因此-关于问题的最后一部分-n不能因对象而异,因此对于struct本身来说是没有意义的。

*surnamesurname[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);