Je suis encore nouveau dans les listes en C et je suis un gros problème ... Tout d'abord je veux vous montrer mon code pour insérer élément à la liste:liste Linked in C
void input_books_info(int number_of_books, BOOK *current)
{
int i;
for(i = 0; i < number_of_books; i++)
{
while(current->next != NULL)
current = current->next;
current->next = (BOOK *)malloc(sizeof(BOOK));
printf_s("%d book catalog number: ", i + 1);
scanf_s("%s", ¤t->next->catalog_number , 20);
printf_s("%d book title: ", i + 1);
scanf_s("%s", current->next->title ,80);
printf_s("%d book author: ", i + 1);
scanf_s("%s", current->next->author ,40);
printf_s("%d book publisher: ", i+1);
scanf_s("%s", current->next->publisher,80);
printf_s("%d book price: ", i + 1);
scanf_s("%f", ¤t->next->price, 5);
printf_s("%d book year published: ", i + 1);
scanf_s("%d", ¤t->next->year_published, 5);
current->next->next = NULL;
printf_s("\n\n");
}
}
Et voici ma fonction principale:
void main (void)
{
int number_of_books, t = 1;
char book_catalog_number[STRMAX];
char book_title[STRMAX];
char book_author[STRMAX];
char reading_file[STRMAX];
char saving_file[STRMAX];
first = malloc(sizeof(BOOK));
first->next = NULL;
/*
printf_s("Enter file name: "); gets(saving_file);
first->next = book_open(first, saving_file);
*/
while(t)
{
char m;
printf_s("1. Input \n0. Exit \n\n");
printf_s("Choose operation: ");
m = getch();
switch(m)
{
case '1':
printf_s("\ninput number of books: ");
scanf_s("%d", &number_of_books);
input_books_info(number_of_books, first);
printf_s("\n");
break;
default:
printf_s("\nNo entry found!\n\n\n\n\n");
break;
}
}
}
et dernier est le problème peut-être ici la fonction d'impression:
void print_books_info(BOOK *current)
{
while(current->next != NULL && current != NULL)
{
printf_s("%s, ", current->next->catalog_number);
printf_s("%s, ", current->author);
printf_s("%s, ", current->next->title);
printf_s("%s, ", current->next->author);
printf_s("%s, ", current->next->publisher);
printf_s("%.2f, ", current->next->price);
printf_s("%d", current->next->year_published);
printf_s("\n\n");
current = current->next;
}
}
et mon problème est Lorsque je lance l'application, le programme bouge bien. Mais quand je démarre l'application, le programme ne stocke que la première entrée de données deuxième et troisième sont perdues ... Pouvez-vous m'aider à comprendre ... ???
En print_books_info, vous devriez vérifier '' current' avant current-> next' dans l'état while. – drawnonward
Pouvez-vous publier la structure que vous utilisez pour BOOK? –
Comment le problème se manifeste-t-il? En d'autres termes, comment savez-vous que les deuxième et troisième livres sont "manquants"? Et que signifie "manquant"? Pouvez-vous nous montrer comment vous appelez 'print_books_info'? –