Я очень плохо знаком с C, поэтому я не совсем уверен, в чем дело.Я не могу понять, как напечатать более одного целочисленного значения в функции.
добавить функцию:
void add(char *name,int id,int copies)
{
/* Pointer to next item */
struct list *newAlbum;
newAlbum = malloc(sizeof(struct list));
strcpy((*newAlbum).name, name); // Set album name
newAlbum->id = id;
newAlbum->copies = copies;
newAlbum->pNext = pFirst;
pFirst = newAlbum;
}
Показать функцию:
void show()
{
system("clear");
struct list *current_node;
current_node = pFirst;
while(current_node != NULL)
{
printf("Album #%d \n",current_node->id);
printf("Album Name: %s \n",current_node->name);
printf("Album Copies:%d \n",current_node->copies);
printf("\n");
current_node=current_node->pNext;
}
}
Моя программа печатает current_node-> id, как если бы он был current_node-> copy, и current_node-> копии распечатаны как 134516043, что, очевидно, неправильно.
Я думаю, что должен передать что-то не так в функцию или что-то, но я не могу понять это.Любые советы?
Я вызываю функцию add следующим образом:
add(name,id,copies);
Список выглядит так:
/* THE LIST */
struct list{
char name[52];
int id;
int copies;
int sold;
struct list* pNext;
};
struct list *pFirst = NULL;
Я вызываю функцию с помощью пользовательского ввода с помощью этогокусок кода:
printf("Enter the name of the new album. \n");
scanf("%s",&name);
printf("Enter the album id. \n");
scanf("%d",&id);
printf("Enter number of copies. \n");
scanf("%d," &copies);
// Pass data to add()
add(name,id,copies);