Interrompre une execution

Résolu/Fermé
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 - 27 avril 2014 à 22:37
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 29 avril 2014 à 20:54
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 avril 2014 à 22:51
Bonjour,

Pourquoi ne pas utiliser le mode debugger ?

Cdlt,
0
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 2
27 avril 2014 à 23:05
moi je connais pas ce mode dont tu parle

merci
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 avril 2014 à 23:19
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
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 2
27 avril 2014 à 23:34
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
27 avril 2014 à 23:49
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
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 2
28 avril 2014 à 12:33
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
28 avril 2014 à 15:32
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
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 2
29 avril 2014 à 14:04
moi je veux eviter ce genre de traitement

switch(choix)
case 1: traitement 1
case 2: traitement 2
.
.
.
case 0: nouvelle partie
0
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 2
29 avril 2014 à 15:32
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
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
29 avril 2014 à 17:45
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
Twinuts Messages postés 5375 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 14 juin 2023 2
29 avril 2014 à 17:58
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
naruto2333 Messages postés 51 Date d'inscription vendredi 21 mars 2014 Statut Membre Dernière intervention 20 janvier 2017 2
29 avril 2014 à 20:30
OK donc c'est d'accord j'utilise la boucle switch();

merci a vous
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
29 avril 2014 à 20:54
Excellent choix ;-)
0