Interrompre une execution

Résolu
slt a tout.
j ai ecris un prog sur c, comprenant plusieurs etape (sasie de donnée et affichage)
et là quand je veut arreter l execution a n importe quel moment je doit fermer le console et executer de nouveau
est ce que quelqu'un pourait m aider sur sa ?

cdlt .

4 réponses

  1. Contributeur
    Bonjour,

    Pourquoi ne pas utiliser le mode debugger ?

    Cdlt,
    0
    1. moi je connais pas ce mode dont tu parle

      merci
      0
      1. Contributeur
        Ben, faut regarder sur internet ;-).
        La méthode dépend de ton compilateur.
        Par exemple, si tu as Code::Blocks :
        http://fr.openclassrooms.com/informatique/cours/c-deboguer-avec-code-blocks

        http://wiki.codeblocks.org/index.php?title=Debugging_with_Code::Blocks

        Cdlt,
        0
        1. mon programme il est bon
          je m explique
          si je suis en plein jeux et je veut demmarer une nouvelle partie comment faire sans fermer le console
          merci
          0
        2. Contributeur
          Ce n'est pas clair ce que tu dis. Il faut être plus précis...

          Si tu veux démarrer, une nouvelle partie, pourquoi ne pas faire une boucle while dans ton programme pour recommencer ?
          0
        3. prenons l 'exemple du jeux des allumette et je joue contre le pc chaqu'un a son tour qui retire 1,2 ou 3 allumette et le perdant c lui qui prend la derniere allumette et au milieu de jeux supposons que j ai fait une erreur et aprés je c que je vais perdre donc c inutil de continuer donc par exemple je prevois une touche qui reprend le programme a zero par exemple si j appuie sur ECHAP sa reprend tout.

          j ai une solution mais elle est chiante en fait aprés chaque saisie on me demande si je veux continuer ou abandonner la partie et reprendre mais c pas une bonne methode avec la scanf("%d",&choix) et apres selon choix on désside .

          MERCI
          0
        4. Contributeur
          Ben, tu peux considérer la touche 0 comme choix pour recommencer.
          Ou alors tu fais un fgets() pour permettre la saisie de n'importe quelle chaîne. Et tu convertis en nombre si besoin.
          L'autre solution permettant l'utilisation d'échap est beaucoup plus compliqué et non standard.
          0
        5. moi je veux eviter ce genre de traitement

          switch(choix)
          case 1: traitement 1
          case 2: traitement 2
          .
          .
          .
          case 0: nouvelle partie
          0
      2. Salut,

        Comme tu sembles refuser les idées proposées, en fonction de ton code si tu veux effectuer un reset de ton soft, tu peux toujours te pencher sur la solution des jumps (pas forcément le plus élégant):

        Exemple (GNU Linux):
        #include <stdio.h>
        #include <stdlib.h>
        #include <string.h>
        #include <unistd.h>
        #include <setjmp.h>
        
        int main(int argc, char** argv) {
          jmp_buf jbuf; /* pour les jumps */
          _Bool end = 0; /* fin de boucle */
          int max = 5; /* nombre max avant le reset */
        
          /* mémorise l'emplacement */
          setjmp(jbuf);
          end = 0;
          int i = 1;
          while(!end) {
            printf("Print %02d\n", (i++));
            sleep(1);
            if(i > max) {
              printf("Soft reset\n");
              /* retourne à l'emplacement precedement memorise */
              longjmp(jbuf, 0);
            }
          }
          
          return 0;
        }
        


        compilation:
        gcc lefichier.c -o lebinaire

        Pour le portage windows:
        sleep: devient Sleep

        le reste devrait être compatible.

        Pour une utilisation plus conforme des jumps: http://groups.di.unipi.it/~nids/docs/longjump_try_trow_catch.html

        0
        1. Contributeur
          Vaut mieux encore dans ce cas un goto...
          Mais on peut s'en passer en jouant avec les break et compagnie (ou les switch :-)).
          0
        2. Le goto à tendance à effrayer les gens alors que les jumps (hors gestion d'exceptions) rebute moins...

          Sinon je partage à 100% tes propositions, mais comme sieur naruto2333 ne semple pas chaud pour ce genre de choses...
          0
        3. OK donc c'est d'accord j'utilise la boucle switch();

          merci a vous
          0
        4. Contributeur
          Excellent choix ;-)
          0