Je suis très nouveau sur C, donc je ne suis pas tout à fait sûr de ce qui se passe. Je n'arrive pas à comprendre comment imprimer plus d'une seule valeur entière dans une fonction.C, Impression de plus d'un entier à partir d'une liste chaînée
fonction add:
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;
}
fonction show:
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;
}
}
Mes programme imprime le current_node-> id comme si elle était current_node-> exemplaires et current_node-> exemplaires est imprimé comme 134516043, ce qui est évidemment, faux.
Je pense que je dois passer quelque chose de mal à la fonction ou quelque chose, mais je ne peux pas comprendre. Des conseils?
j'appelle la fonction ajouter comme ceci:
add(name,id,copies);
La liste est comme ceci:
/* THE LIST */
struct list{
char name[52];
int id;
int copies;
int sold;
struct list* pNext;
};
struct list *pFirst = NULL;
J'appelle la fonction avec l'entrée d'utilisateur avec ce morceau de code:
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);
Quelle est la définition de 'struct list'? (En particulier, quel est le type de 'name'?) – caf
Désolé à ce sujet. Ajoutée. –
Quelle est la valeur de 'copies' lors de l'appel de' add'? Avez-vous essayé avec des littéraux à la place, pour faire la vérification (au cas où la variable a la mauvaise valeur), c'est-à-dire 'add (" blah ", 3, 8);'? – lijie