Comment empêcher la fonction de se répéter ? [Résolu] - Forum C

Comment empêcher la fonction de se répéter ? Empecher la repetion de mon annimation flash. » Forum - Webmaster Toshiba flash cards empeche l'arret » Forum - Windows 10 Un bloqueur de publicité empêche la lecture. veuillez le désactiver pour démarrer la vidéo. » Forum - Internet / Réseaux sociaux Comment désactiver un bloqueur de publicité » Forum - Mozilla Firefox Task host windows 10 empeche la fermeture (Résolu) » Forum - Internet / Réseaux sociaux

Bonjour,
J'ai créé une fonction pour me permettre d'ajouter une classe ainsi que les renseignements qui vont avec (effectif et code de la classe ) dans un fichier nommé classe qu'elle (la fonction) crée elle. Mais après un premier tour (tout ce passe bien en ce moment là) elle recommence. Je n'ai pourtant pas utilisé de boucle.

Forum

Comment empêcher la fonction de se répéter ? Empecher la repetion de mon annimation flash. » Forum - Webmaster Toshiba flash cards empeche l'arret » Forum - Windows 10 Un bloqueur de publicité empêche la lecture. veuillez le désactiver pour démarrer la vidéo. » Forum - Internet / Réseaux sociaux Comment désactiver un bloqueur de publicité » Forum - Mozilla Firefox Task host windows 10 empeche la fermeture (Résolu) » Forum - Internet / Réseaux sociaux

Web: www.shapebootstrap.net

8 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Sans code impossible de répondre.

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

#include<stdio.h> #include<stdlib.h> #include<string.h>  //renseignements sur les classes struct classe { int num; char nom[50]; int effec; }; struct classe classes;  //fonction de recherche classe int recherche_classe(int code) {  FILE*classe ; classe = fopen("classes.g11", "r"); if(classe !=NULL) { do { fscanf(classe,"%d ;%s ;%ld\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); if(classes.num== code) { fclose(classe); return 1;  } }while(!feof(classe)); fclose(classe); return 0; } }   //ajouter une classe <gras>Void ajouter_classe()</gras> { FILE*classe; int code; /*char c; c=';';*/ classe=fopen("classes.g11","a"); printf("\nentrez l'identifiant de la classe: "); scanf("%d",&code); fflush(stdin);  while(recherche_classe(code)==1) { printf("\ncette classe existe deja\n"); printf("entrer un nouvel identifiant"); scanf("%d",&code); } if(classe != NULL) { classes.num=code; printf("%d\n",classes.num); printf("\nentrer le nom de la classe: "); //gets(classes.nom); scanf("%s",classes.nom); fflush(stdin); printf("%s\n",classes.nom); printf("\nentrer l'effectif de la classe:"); scanf("%d",classes.effec); printf("%d\n",classes.effec); fflush(stdin);  fprintf(classe,"%d ;%s ;%d\n",classes.num,classes.nom,classes.effec); fflush(stdin);  fclose(classe); } }  //afficher la liste des classes void affiche_classe() { FILE*classe =fopen("classes.g11", "r"); printf("la liste des classes est :\n\n"); printf("Code de la classe \t; nom de la classe\t; effectif de la classe\n"); if(classe!=NULL) { do { fscanf(classe,"%d ;%s ;%d\n",&classes.num,&classes.nom,&classes.effec); fflush(stdin); printf("%d\t ;%s\t ;%d\n",classes.num,classes.nom,classes.effec); } while (!feof(classe)); fclose(classe); } }   int main() { int choix; char T; do { printf("entrer 1 pour ajouter une classe\n"); printf("entrer 2 pour afficher la liste des classes\n"); printf("entrez votre choix: "); scanf("%d",&choix); while(choix>=1 && choix<=2) { switch(choix) { case 1:ajouter_classe(); break; case 2:affiche_classe(); break; } }  printf("\nvoulez vous continuer O/N"); scanf("%s",&T); fflush(stdin); } while(T=='o' ||T=='O');}

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Je n'ai pourtant pas utilisé de boucle.
Bien sûr que si :

while(choix>=1 && choix<=2)
(l. 107).

Reply
réponses:
  • Harvard226

    Oui mais apres l'appel de la fonction, après un premier tour la fonction est encore rappeler alors que normalement l'exécution devrait se poursuivre dans le int main.

  • pkpkmépkpk

    L'exécution se poursuit bien dans main, mais dans la boucle

    while
    , donc elle est réexécutée.

  • Harvard226

    Dans ce cas là ne devrait-on pas me proposer normalement d'entrer 1 pour ajouter une classe et 2 pour afficher la liste des classes. ?

  • pkpkmépkpk

    Non puisque ces instructions sont hors de la boucle

    while
    .

  • Harvard226

    Oui effectivement ça marche maintenant.
    Merci pkpkmépkpk

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed