【问题标题】:Insert string or character in Linked-list C在链表 C 中插入字符串或字符
【发布时间】:2019-05-04 04:46:14
【问题描述】:

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

例如定义列表:

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] 会起作用吗?

另一个信息,可能与第一个问题有关,定义到结构中的数组的大小可以是可变的吗?

【问题讨论】:

    标签: c string function linked-list char


    【解决方案1】:

    你定义它的方式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);
    

    【讨论】:

      猜你喜欢
      • 2016-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      相关资源
      最近更新 更多