Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1336 connectés 

  FORUM HardWare.fr
  Programmation

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°86201
ddpforman
Posté le 04-01-2002 à 20:37:37  profilanswer
 

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....
mood
Publicité
Posté le 04-01-2002 à 20:37:37  profilanswer
 

n°86210
Alload
Posté le 04-01-2002 à 20:47:51  profilanswer
 

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.

n°86212
ddpforman
Posté le 04-01-2002 à 20:49:21  profilanswer
 

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....
n°86217
Gounok
Faux traître
Posté le 04-01-2002 à 20:55:52  profilanswer
 

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:

n°86247
flo850
moi je
Posté le 04-01-2002 à 22:33:36  profilanswer
 

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 .


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

n°86257
antp
Super Administrateur
Champion des excuses bidons
Posté le 04-01-2002 à 23:07:18  profilanswer
 

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
n°86272
LeSchmollu​ck
Posté le 04-01-2002 à 23:49:59  profilanswer
 

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:

n°86303
flo850
moi je
Posté le 05-01-2002 à 01:16:05  profilanswer
 

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 )


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

n°86316
Krueger
tout salaire demande dutravail
Posté le 05-01-2002 à 02:50:07  profilanswer
 

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
n°86332
flo850
moi je
Posté le 05-01-2002 à 09:47:25  profilanswer
 

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]


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

mood
Publicité
Posté le 05-01-2002 à 09:47:25  profilanswer
 

n°86439
LeSchmollu​ck
Posté le 05-01-2002 à 18:13:01  profilanswer
 

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 :) )

n°86485
flo850
moi je
Posté le 05-01-2002 à 23:34:06  profilanswer
 

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 )


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

n°86585
246tNt
Resistance is futile
Posté le 06-01-2002 à 20:23:02  profilanswer
 

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 ...

n°86600
antp
Super Administrateur
Champion des excuses bidons
Posté le 06-01-2002 à 22:58:27  profilanswer
 

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
n°86604
bjbebert
Posté le 06-01-2002 à 23:14:58  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

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

 

Sujets relatifs
COBOL : attention question dure....question!!!!
question???question en c: (random et erreur de segmentation).. aidez moi :-)
[VB6] lancement de programme depuis un bouton ; 2 kestions simples[c++] petite question sur les pointeurs (pas un problème)
question simple : jsp ? servlet ?Question de newbie: c'est quoi php nuke ??
[java] lancer l'execution d'un programme 
Plus de sujets relatifs à : question en c: pour arreter le programme.. on fait coment?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR