question en c: pour arreter le programme.. on fait coment?

question en c: pour arreter le programme.. on fait coment? - Programmation

Marsh Posté le 04-01-2002 à 20:37:37    

voila, je voudrais savoir comment on peut arreter un programme c:
avec quel procedure? genre en turbo pascal: il y a halt
et en c .. il y a quoi?
merci vraiment pour toutes les réponses que vous donnez à chaque fois.. et qui nous aide beaucoup !! BEAUCOUP!!
je parle pour beaucoup de personne je pensee.. la
merci


---------------
Il les a tuées avec leur amour, c'est comme ça tous les jours, partout dans le monde entier....
Reply

Marsh Posté le 04-01-2002 à 20:37:37   

Reply

Marsh Posté le 04-01-2002 à 20:47:51    

Je suis pas du tout sûr, mais je pense que si tu fais un return 1; dans la fonction main() ça arrete le prog.

Reply

Marsh Posté le 04-01-2002 à 20:49:21    

d'accord .. merci.. déjà  
si vous avez d'autre solution n'hesitez pas;. merci.. !!! :-)


---------------
Il les a tuées avec leur amour, c'est comme ça tous les jours, partout dans le monde entier....
Reply

Marsh Posté le 04-01-2002 à 20:55:52    

Essaie exit(x), avec x un nombre pour te repérer si t'en mets plusieurs exit(x) dans ton programme.
Si tu veux t'arrêter à cause d'une erreur essaie aussi perror("Texte affiché si ça plante à ce moment là" ), qui est suivi d'un texte explicatif si tu le fais après une opération susceptible d'en générer un, par exemple si une ouverture de fichier avec open qui renvoie -1...
Bon c'est pas très clair ce que je raconte mais rapporte toi aux docs pour ces 2 fonctions.
Voilà quand même des exemples :
 
 
id=shmget((key_t)503,sizeof(int),0); // shmget rend -1 en cas d'erreur
 if (id==-1)
 {
  perror("Erreur lors de l'identification du segment de mémoire partagée principal" );
  exit(0);
}
 
 
Bon courage :hello:

Reply

Marsh Posté le 04-01-2002 à 22:33:36    

a la fin du main tout simplement ....
non je deconne , moi je vote pour exit (x), parcque cette fonction s'amuse a refermer tous les flux ,ouvert ( fichier ou autre ) , a liberer la memeoire allouée dynamiquement .En gros , elle fait le menage .
Sous linux .
sous windows , c pas sur qu'elle fasse tant de chose aussi bien .


---------------

Reply

Marsh Posté le 04-01-2002 à 23:07:18    

halt c'est pas un peu sauvage comme fin de programme ?
dans la doc de Delphi, pour halt :

Citation :

Initiates abnormal termination of a program.


 
en C y a abort qui est du même genre.

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 04-01-2002 à 23:49:59    

le  
return (x);
dans le main me semble une bonne solution, le x dépendant  
de la définition du main. Il est pas nécéssaire de mettre
quoique ce soit si le main est déclaré :
void main ()
 
Mais bon... attention quand même ça marche sous Unix :sol: mais
sous Windows un reboot risque d'être nécessaire pour  
libérer la mémoire et tuti quanti... :D:D:D (même pour XP)
 
c'est une méthode violente tout de même... :gun:

Reply

Marsh Posté le 05-01-2002 à 01:16:05    

avant de le faire sous windows , il faut liberer toute la memoire allouée dynamiquement ( avec malloc/calloc ..) en utilisant la fonction free.
sous linux , gcc ajoute en fin de ton prog exit(0) si tu n'a rien mis etdonc fais le menage a ta place ( trop fort )


---------------

Reply

Marsh Posté le 05-01-2002 à 02:50:07    

Cool, on apprend encore des choses tous les jours même après quelques années de pratique du C (enfin le C++ maintenant). :)
 

Citation :

sous linux , gcc ajoute en fin de ton prog exit(0) si tu n'a rien mis etdonc fais le menage a ta place ( trop fort )


Mais si on fait un return dans le main, y a plus d'exit(0)?

 

[edtdd]--Message édité par Krueger--[/edtdd]


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 05-01-2002 à 09:47:25    

return sort juste de la fonction ( meme si la fonction s'appelle main ) alorsd que exit fait en plus le mengae et la vaisselle .
de toute maniere , ca fait parti des trucs géré par le compilo , faut pas s'embeter avec .
le return a la fin du main est conseillé pour ne as avoir un warnig de declaration de type de foction ( warning : end of non-void function )

 

[edtdd]--Message édité par flo850--[/edtdd]


---------------

Reply

Marsh Posté le 05-01-2002 à 09:47:25   

Reply

Marsh Posté le 05-01-2002 à 18:13:01    

FLO850, tu es sur de ton coup ?
 
Le fait que GCC rajoute EXIT à la fin du source ?
Parce que si c'est le cas c'est plutôt sympas :) :) :)
 
(un fois de plus vive ce petit compilateur génial :) )

Reply

Marsh Posté le 05-01-2002 à 23:34:06    

leschmolluck a écrit a écrit :

FLO850, tu es sur de ton coup ?
 
Le fait que GCC rajoute EXIT à la fin du source ?
Parce que si c'est le cas c'est plutôt sympas :) :) :)
 
(un fois de plus vive ce petit compilateur génial :) )  




honnetement , je mettrai pas ma tete a couper ( j'en ai qu'une ) , mais un de mes mains , pourquoi pas .
je pense que la meilleure preuve , c'est que si tu " oublie " de faire des free , ils sont fait a la fin de ton code , de meme pour les fichiers que tu ouvre et que tu oublie de fermer ( attention quand meme au merde avec les fichier ouvert en ecriture , ceux la , il faut les fermer pour etre sur )


---------------

Reply

Marsh Posté le 06-01-2002 à 20:23:02    

De toute facon moi je dit :
 
* Fermer et dessalouer TOUT proprement pour etre sur.
* exit(errcode); Pour au cas ou t'aurait foiré ton coup ...

Reply

Marsh Posté le 06-01-2002 à 22:58:27    

flo850 a écrit a écrit :

 
honnetement , je mettrai pas ma tete a couper ( j'en ai qu'une ) , mais un de mes mains , pourquoi pas .
je pense que la meilleure preuve , c'est que si tu " oublie " de faire des free , ils sont fait a la fin de ton code , de meme pour les fichiers que tu ouvre et que tu oublie de fermer ( attention quand meme au merde avec les fichier ouvert en ecriture , ceux la , il faut les fermer pour etre sur )  




 
c'est normalement l'OS qui vire toute la mémoire allouée au prog.
En tout cas Unix/Linux et Win NT le font.
quand à savoir si win 3.x/9x le fait, ça je suppose mais pas entièrement en tout cas.
 
le coup du exit au lieu du return ca me semble bizarre quand même...

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 06-01-2002 à 23:14:58    

Pour la mémoire allouée par malloc, y a pas de problème, elle est libérérée de fait par l'OS.
Par contre, pour tout ce qui est lié au système (handles de fenêtres, de fichiers..) vaut mieux faire le ménage soi-même.

Reply

Sujets relatifs:

Leave a Replay

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