我想更改链表中的值。该列表定义为
struct car_elements {
char *car_rego;
double time_parked;
struct car_elements *next;
};
typedef struct car_elements car;
我创建了一个包含 10 个元素的链表。我可以轻松更改 time_parked,但无法更新 char *car_rego。创建字符串
char *rego_array = malloc(7*sizeof(char));
CreateCarRego(rego_array);
CreateCarRego 的定义是
void *CreateCarRego(char *rego_array)
{
int temp = 0;
for (int w = 0; w < 6; w++)
{
if (w < 3)
{
temp = GenerateRandomNumber(26.0);
temp = temp + ASC_TO_LETTER;
rego_array[w] = (char)temp;
}
else
{
temp = GenerateRandomNumber(10.0);
temp = temp + ASC_TO_NUMBER;
rego_array[w] = (char)temp;
}
rego_array[7] = '\0';
}
}
然后改变值
car *current_carpark = head; //head holds the linked list
for (int i = 1; i < carspace_number; i++) { //I know which element I want to change
current_carpark = current_carpark->next;
}
current_carpark->car_rego = (char*)calloc(strlen(rego_array), sizeof(char));
strncpy(current_carpark->car_rego, rego_array, strlen(rego_array));
这可行,但现在我有内存泄漏 - 我无法释放 current_carpark。有了结构定义,我就有了创建字符串(只有 3 个随机字母和 3 个随机数)和更新 car_rego 的最佳方法。我不能只使用
current_carpark->car_rego = rego_array;
因为没有存储任何东西。我是 C 新手,是的,这是一项任务,但是我已经尝试并试图让它工作但没有成功