リンクされたリストの値を変更したい。リストは次のように定義されます
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が初めてで、はい、これは割り当てですが、これを機能させようとしましたが、成功しませんでした