Après scanf(), c'est le néant
Résolu
theo_dt04
Messages postés
2
Date d'inscription
Statut
Membre
Dernière intervention
-
theo_dt04 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
theo_dt04 Messages postés 2 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Après scanf(), c'est le néant
- Alex, dont la mère est née à pau, s'est créé un compte de messagerie alex@pxmail.fr. il a oublié le mot de passe qu’il a choisi. aidez-le à le retrouver. ✓ - Forum Mozilla Firefox
- REPONSE A ALEX - Forum Matériel & Système
- Scanf en java ✓ - Forum Programmation
- ALEX ✓ - Forum TV & Vidéo
- Doctor Alex Antispyware - Télécharger - Antivirus & Antimalwares
3 réponses
Deux choses, on n'a pas besoin du & quand on lit une chaîne en format %s.
Ensuite, le format %s s'arrête au premier espace.
Tu pourrais essayer le format %[^\n] qui veut dire tout sauf la fin de ligne.
J'ai regardé trop vite, tu appelles tes fonctions avec [i] et tu mets le [i] dans les paramètres
En fait, tu ne crées et n'affiches qu'un livre à la fois.
Enlève les indices dans les fonctions.
J'ai eu l'idée de faire un copier-coller de ton code.
Il y a plus d'erreurs que je pensais. Pas surprenant que ça plantait.
je te donne la version corrigée:
#include <stdio.h> typedef struct Livre Livre; struct Livre { int annee; char titre[100]; char auteur[100]; // il faut un ; ici }; void afficherLivre(Livre livre) { printf("=================\n"); printf("Titre %s\n", livre.titre); printf("Auteur %s\n", livre.auteur); printf("Annee %d\n", livre.annee); printf("=================\n"); } void creerLivres(Livre *livre){ // Il faut passer un pointeur pour remplir la bonne structure, et non une copie. printf("entrez l'annee de publication de votre livre \n"); scanf("%d",&livre->annee); printf("entrez le titre de votre livre \n"); scanf(" %[^\n]",livre->titre); // Les espaces au début sont pour faire sauter la fin de ligne. printf("entrez le nom de l'auteur de votre livre \n"); scanf(" %[^\n]",livre->auteur); } int bibliotheque; // Je l'ai laisssé mais ça n'est pas une bonne idée d'avoir des variables globales. void tailleBibliotheque(){ printf("combien de livre contient votre biblioteque ?\n"); scanf("%d", &bibliotheque); } int main() { Livre livre[1000]; // Tu n'avais pas le bon type. tailleBibliotheque(); for (int i = 0; i < bibliotheque; i++){ creerLivres(&livre[i]); // Ici, je donne le pointeur. } for (int i = 0; i < bibliotheque; i++){ afficherLivre(livre[i]); } return 0; }