Retour fonction C

Retour fonction C - C - Programmation

Marsh Posté le 30-03-2012 à 16:54:50    

Bonjour,
 
Alors voila mon problème. J'ai un programme C qui appelle un sous-programme qui lui même appelle un autre sous programme qui fait du contrôle d'erreur (jusque là rien d'extraordinaire ^^).
 
Mon problème est au niveau du contrôle d'erreur, parce que dans celle ci, je traite l'erreur et j'affiche ensuite un message à l'utilisateur et je lui demande de faire
un choix. En fonction de ce choix, soit le 1er sous programme continue, ou alors on retourne directement au programme principal. Je mets un petit schéma juste  
en dessous :
 
http://img16.imageshack.us/img16/3295/schmaprogramme.png
 
 
En gros je n'arrive pas à trouver le moyen de faire cela.
J'ai déclarer mes fonctions de la sorte :
 
xxx sous_programme(..);
 
void gerer_erreur(...);


Message édité par shiriom le 30-03-2012 à 16:57:09
Reply

Marsh Posté le 30-03-2012 à 16:54:50   

Reply

Marsh Posté le 30-03-2012 à 18:09:55    

Ce que tu appelles sous-programme, c'est des fonctions ou tu exécutes vraiment des execvp & consorts ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 30-03-2012 à 18:27:23    

WiiDS a écrit :

Ce que tu appelles sous-programme, c'est des fonctions ou tu exécutes vraiment des execvp & consorts ?


 
Le terme le plus judicieux ça serait plutôt "module" en fait. Mais en gros oui, ce que j'appelle des sous programme c'est des fonctions. Mon prog principale appelle une fonction qui rappelle une autre fonction (celle de contrôle en l'occurrence)

Reply

Marsh Posté le 31-03-2012 à 18:24:55    

Code :
  1. int gerer_erreur() {
  2.   // ...
  3.   if(erreurs corrigées) { 
  4.     return 0;
  5.   }
  6.   return -1;
  7. }
  8. int sous_programme() {
  9.   // ...
  10.   int e = gerer_erreur();
  11.   if(e < 0) {
  12.     return e;
  13.   }
  14.   // ...   
  15.   return 0
  16. }
  17. int main(int argc, char **argv) {
  18.   while(sous_programme() < 0);
  19.  
  20.   return 0;
  21. }


 
Quelques chose comme ça ?
tu ne peux pas retourner directement au programme principal, mais tu peux vérifier le code de retour de la gestion d'erreur pour quitter sous_programme.

Reply

Marsh Posté le 01-04-2012 à 00:49:20    

Iradrille a écrit :

Code :
  1. int gerer_erreur() {
  2.   // ...
  3.   if(erreurs corrigées) { 
  4.     return 0;
  5.   }
  6.   return -1;
  7. }
  8. int sous_programme() {
  9.   // ...
  10.   int e = gerer_erreur();
  11.   if(e < 0) {
  12.     return e;
  13.   }
  14.   // ...   
  15.   return 0
  16. }
  17. int main(int argc, char **argv) {
  18.   while(sous_programme() < 0);
  19.  
  20.   return 0;
  21. }


 
Quelques chose comme ça ?
tu ne peux pas retourner directement au programme principal, mais tu peux vérifier le code de retour de la gestion d'erreur pour quitter sous_programme.


 
Oui c'est ça. C'est ce que j'avais pensé faire au départ mais je voulais voir s'il n'y avais pas une autre solution pour pas avoir à changer les définitions de mes fonctions après coup (ma flemmardise me perdra un de ces jours..).
En tout cas merci pour la réponse :)

Reply

Sujets relatifs:

Leave a Replay

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