有人可以帮我理解为什么当我尝试打印出 student_name 的值时,它只返回 null 吗?我在 C 中实现了一个基本的哈希表来存储学生的姓名、ID 和 2 个测试。其他一切都正确存储,无论我尝试什么,我都无法保存 student_name。我有两个结构,哈希表本身,然后记录我打算放入表中的元素。字符串永远不会超过 18 个字符。
int main(){
char op[1];
int stu_id[1];
int exam1[1];
int exam2[1];
char * student_name = (char*)malloc(18*sizeof(char));
struct hashtable * dictionary = malloc(sizeof(struct hashtable));
dictionary->size = 13;
dictionary->table = malloc(13*sizeof(struct record *));
if(dictionary==NULL||dictionary->table==NULL){
printf("Unable to allocate memory for the dictionary.\n");
return;
}
int i;
int s = 13;
while(i<s){
dictionary->table[i]=NULL;
i++;
}
while(scanf("%s %d %d %d %s", op, stu_id, exam1, exam2, student_name) !=EOF){
if(*op=='i'){
printf("Intializing %s\n", *student_name);
add_item(dictionary, stu_id[0], exam1[0], exam2[0], student_name);
}
free(dictionary);
free(student_name);
return 0;
}