Problème d'affichage programme
Fermé
baedyl
Messages postés
9
Date d'inscription
vendredi 27 février 2015
Statut
Membre
Dernière intervention
15 juin 2015
-
15 avril 2015 à 19:38
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 avril 2015 à 00:13
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 16 avril 2015 à 00:13
A voir également:
- Problème d'affichage programme
- Programme demarrage windows 10 - Guide
- Affichage double ecran - Guide
- Problème affichage fenêtre windows 10 - Guide
- Windows 11 affichage classique - Guide
- Mettre en veille un programme - Guide
1 réponse
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
15 avril 2015 à 22:07
15 avril 2015 à 22:07
Bonjour,
int choix=0,N;
Menu(T,choix);
Ca ne modifiera pas la variable choix présent dans le main(). Pour ce faire, il faut passer par un pointeur. Et si tu n'as pas besoin de modifier choix, alors ça sert à rien de l'envoyer en paramètre. Il suffit de le déclarer dans la fonction Menu().
De plus à quoi sert ta fonction N dans le main() ?
void Menu(Document T[100],int choix){
int N,ISBN;
Exactement même remarque pour N que tu utilises pour appeler les fonctions Remplissage(), Affichage(), Recherche() et Tri().
while(T[i].ISBN==T[i-1].ISBN);
Attention, lorsque i=0 (1ère itération), tu auras T[-1] => plantage.
fflush(stdin);
Ce n'est pas correct. Pour vider le buffet, il faut le faire manuellement avec une boucle while() sur un getchar().
gets(T[i].Titre);
Fonction obsolète. On utilise plutôt la fonction fgets().
Même remarque pour les autres gets().
Pas besoin de return; à la fin de tes fonctions void.
Corrige déjà tout ça, et reposte ton code corrigé. N'hésite pas non plus à nous dire précisément où ça plante précisément.
Cdlt,
int choix=0,N;
Menu(T,choix);
Ca ne modifiera pas la variable choix présent dans le main(). Pour ce faire, il faut passer par un pointeur. Et si tu n'as pas besoin de modifier choix, alors ça sert à rien de l'envoyer en paramètre. Il suffit de le déclarer dans la fonction Menu().
De plus à quoi sert ta fonction N dans le main() ?
void Menu(Document T[100],int choix){
int N,ISBN;
Exactement même remarque pour N que tu utilises pour appeler les fonctions Remplissage(), Affichage(), Recherche() et Tri().
while(T[i].ISBN==T[i-1].ISBN);
Attention, lorsque i=0 (1ère itération), tu auras T[-1] => plantage.
fflush(stdin);
Ce n'est pas correct. Pour vider le buffet, il faut le faire manuellement avec une boucle while() sur un getchar().
gets(T[i].Titre);
Fonction obsolète. On utilise plutôt la fonction fgets().
Même remarque pour les autres gets().
Pas besoin de return; à la fin de tes fonctions void.
Corrige déjà tout ça, et reposte ton code corrigé. N'hésite pas non plus à nous dire précisément où ça plante précisément.
Cdlt,
15 avril 2015 à 23:46
J'ai suivi tes remarques...Mais il y a toujours des petits problèmes, quand j'utilise "fgets" on me dit "too few arguments to function fgets". Aussi j'ai pas encore vu les pointeurs donc je suis un peu perdu et aussi l'alternative que tu m'as proposé pour fflush reste encore un peu flou dans ma tete.
Sinon au moment du lancement de la fonction affichage mon programme plante toujours...
16 avril 2015 à 00:13
Pour fgets(), il faut regarder le manuel (man fgets) : cela donne par exemple :
Pour fflush(stdin), cela n'existe pas en C...
La bonne méthode :
A mettre dans une fonction bien sûr.
Après, il restera probablement d'autres erreurs. C'est pour ça que j'insiste sur le fait que tu corriges l'ensemble, que tu repostes le code corrigé et que tu nous dises précisément où ça plante.