Interrompre une execution

Résolu
naruto2333 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Contributeur Dernière intervention   1 846
 
Bonjour,

Pourquoi ne pas utiliser le mode debugger ?

Cdlt,
0
naruto2333 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   2
 
moi je connais pas ce mode dont tu parle

merci
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Contributeur Dernière intervention   1 846
 
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   Statut Membre Dernière intervention   2
 
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   Statut Modérateur Dernière intervention   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
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
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   Statut Modérateur Dernière intervention   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
naruto2333 Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   2
 
OK donc c'est d'accord j'utilise la boucle switch();

merci a vous
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Excellent choix ;-)
0