Mon programme s’arrête automatiquement
Fermé
PokemonPika
Messages postés
12
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
29 juin 2018
-
Modifié par baladur13 le 3/12/2015 à 11:05
PokemonPika Messages postés 12 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 29 juin 2018 - 4 déc. 2015 à 18:45
PokemonPika Messages postés 12 Date d'inscription mercredi 2 décembre 2015 Statut Membre Dernière intervention 29 juin 2018 - 4 déc. 2015 à 18:45
A voir également:
- Mon programme s’arrête automatiquement
- Programme demarrage windows 10 - Guide
- Automatiquement - Guide
- Désinstaller programme windows 10 - Guide
- Pc demarre et s'arrete en boucle - Forum Matériel & Système
3 réponses
Utilisateur anonyme
2 déc. 2015 à 21:19
2 déc. 2015 à 21:19
Bonsoir, c'est un classique du programme en mode console.
Si tu termines ton programme par une demande de saisie clavier alors il s'arrêtera après que tu aies tapé quelque chose.
A l'avenir pour poster tes codes, utilise la la coloration syntaxique.
Si tu termines ton programme par une demande de saisie clavier alors il s'arrêtera après que tu aies tapé quelque chose.
A l'avenir pour poster tes codes, utilise la la coloration syntaxique.
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
2 déc. 2015 à 21:30
2 déc. 2015 à 21:30
Comment lances-tu ton exécutable?
Lance le depuis un terminal (cmd.exe), en supposant que tu sois sous Win$.
Ton code compile et s'exécute sans problème sous gcc
(après quelques corrections mineures du source)
johand@bata:~/src/CCM$ gcc-4.8 -Wall -o unexp_end unexp_end.c
johand@bata:~/src/CCM$ gcc-5 -Wall -o unexp_end unexp_end.c
johand@bata:~/src/CCM$ ./unexp_end
Entrez une ligne et validez avec Entrée
toto titi@@
Vous avez écrit : 'toto titi@@'
Lance le depuis un terminal (cmd.exe), en supposant que tu sois sous Win$.
Ton code compile et s'exécute sans problème sous gcc
(après quelques corrections mineures du source)
johand@bata:~/src/CCM$ gcc-4.8 -Wall -o unexp_end unexp_end.c
johand@bata:~/src/CCM$ gcc-5 -Wall -o unexp_end unexp_end.c
johand@bata:~/src/CCM$ ./unexp_end
Entrez une ligne et validez avec Entrée
toto titi@@
Vous avez écrit : 'toto titi@@'
PokemonPika
Messages postés
12
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
29 juin 2018
1
3 déc. 2015 à 10:58
3 déc. 2015 à 10:58
Bonjour, et merci pour ta réponse. Je l'ai exécuté effectivement sans problème avec l'invite de commande. Cependant j'ai aussi essayé de le compiler avec gcc (sous windows) et ça ne fonctionne toujours pas.
Qu'as-tu modifié dans le code du programme ?
Merci encore
Qu'as-tu modifié dans le code du programme ?
Merci encore
mtR^
Messages postés
1211
Date d'inscription
vendredi 17 juin 2011
Statut
Membre
Dernière intervention
3 juin 2023
169
3 déc. 2015 à 16:28
3 déc. 2015 à 16:28
Salut,
Rajoute system("PAUSE"); à la fin de ton main
Rajoute system("PAUSE"); à la fin de ton main
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié par [Dal] le 3/12/2015 à 16:34
Modifié par [Dal] le 3/12/2015 à 16:34
cela ne fonctionnera pas sous Linux (ce n'est pas portable) ... je ne suis sûr s'il est sous Linux ou Windows vu qu'il dit utiliser Geany et/ou wxDev-c++.
PokemonPika
Messages postés
12
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
29 juin 2018
1
3 déc. 2015 à 18:52
3 déc. 2015 à 18:52
Merci pour ta réponse !
En réponse à Dal, je suis sur Windows. Mais effectivement je souhaite que les programmes soient portables.
Petite question, si je souhaite créer une interface graphique pour le programme, y aura-t-il encore ce problème de fermeture ? Je n'en suis pas encore là dans mon apprentissage, mais si, arrivé à la création de l'interface, je n'ai plus ce problème, je ne vais pas chercher plus longtemps et plutôt utiliser la méthode de l'invite de commande proposé par jisisv...
En réponse à Dal, je suis sur Windows. Mais effectivement je souhaite que les programmes soient portables.
Petite question, si je souhaite créer une interface graphique pour le programme, y aura-t-il encore ce problème de fermeture ? Je n'en suis pas encore là dans mon apprentissage, mais si, arrivé à la création de l'interface, je n'ai plus ce problème, je ne vais pas chercher plus longtemps et plutôt utiliser la méthode de l'invite de commande proposé par jisisv...
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 094
Modifié par [Dal] le 3/12/2015 à 19:01
Modifié par [Dal] le 3/12/2015 à 19:01
Non, tu n'auras normalement pas ce problème, les programmes en interface graphique utilisateur (GUI) fonctionnant en boucle en attente d'événements.
Par contre, faire un programme GUI portable est une autre difficulté. Tu as intérêt à utiliser des bibliothèques telles que wxWidgets, dont l'accès devrait être facilité par wxDev-c++.
Par contre, faire un programme GUI portable est une autre difficulté. Tu as intérêt à utiliser des bibliothèques telles que wxWidgets, dont l'accès devrait être facilité par wxDev-c++.
PokemonPika
Messages postés
12
Date d'inscription
mercredi 2 décembre 2015
Statut
Membre
Dernière intervention
29 juin 2018
1
3 déc. 2015 à 19:11
3 déc. 2015 à 19:11
Ouf, voilà qui me facilitera la chose à l'avenir. Merci, on m'avait justement déjà conseillé cette bibliothèques.
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
4 déc. 2015 à 13:54
4 déc. 2015 à 13:54
#include <stdlib.h> #include <stdio.h> int lire_clavier(char *str, int taille) { int i; fgets(str, taille, stdin); str[taille-1]='\0'; for(i=0; str[i]; i++) /*supprime le retour chariot*/ { if(str[i] == '\n') { str[i] = '\0'; break; } } return(i); /*Renvoie 0 si la chaine est vide*/ } int main(int argc, char *argv[]) { char buffer[80]; printf("Entrez une ligne et validez avec Entrée\n"); lire_clavier(buffer, sizeof(buffer)); printf("Vous avez écrit : '%s'\n", buffer); return EXIT_SUCCESS; }
3 déc. 2015 à 11:03
Et merci du conseil pour la coloration.
3 déc. 2015 à 12:00
Modifié par [Dal] le 3/12/2015 à 16:23
en clair, si l'utilisateur tape plus que ce que fgets va demander (la taille de la saisie consommée par fgets est limitée à 80 char dans ce code), il restera des caractères à récupérer dans stdin qui seront consommés lors de prochains appels à .
Il faudrait vider le tampon de stdin, si le dernier caractère récupéré par n'est pas .
Dal
3 déc. 2015 à 19:07
Est-il possible de remplacer en quelque chose comme ? Désolé si ce que je dis est une énormité ...
3 déc. 2015 à 19:31
En C99, tu peux en revanche faire quelque chose des déclarations comme avec une valeur de n dans une variable pouvant être traitée par le programme avant la déclaration du tableau... avec le problème que tu n'as pas vraiment de possibilité de détecter une erreur d'allocation de mémoire (ni de faire un ).
Ou en simple C89, une allocation dynamique avec des pointeurs sur char et , et une réallocation possible avec , qui te permet d'augmenter la mémoire allouée à ton tampon en cours d'exécution si la mémoire disponible le permet ... il ne faudra pas oublier de libérer la mémoire avec .
Dal