この出力は正しくありません。最初の列車の代わりに 2 番目の列車の名前が表示され、最初の列車の名前は完全に失われます。論理障害はどこにありますか? また、ルートの目的は何ですか?
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
struct trainset {
char name[50];
int price;
struct trainset *next;
};
void show_list(struct trainset *list);
int main (void){
struct trainset *root;
root = (struct trainset *)malloc(sizeof(struct trainset));
strncpy(root ->name, " ", 50);
root ->price = 0;
root ->next = 0;
struct trainset *first_train;
first_train = (struct trainset *) malloc(sizeof(struct trainset));
root ->next = first_train;
strncpy(first_train->name, "Fantasy Train Set", 50);
first_train->price = 129;
first_train->next = NULL;
struct trainset *second_train;
second_train = (struct trainset *)malloc(sizeof(struct trainset));
first_train->next = second_train;
strncpy(first_train->name, "Uncle Bobs train set", 50);
second_train ->price = 69;
second_train ->next = NULL;
struct trainset *third_train;
third_train = (struct trainset *)malloc(sizeof(struct trainset));
second_train->next = third_train;
strncpy(third_train ->name, "Budha Bread Train", 50);
third_train ->price = 169;
third_train ->next = NULL;
show_list(first_train);
return 0;
}
void show_list(struct trainset *list)
{
while(list->next!=NULL)
{
printf("train set name: %s, Train price: %d\n", list->name, list->price);
list = list->next;
}
printf("train set name: %s, train price: %d", list->name, list->price);
}