IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

Blocage du programme


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Par défaut Blocage du programme
    Bonjour à toutes et à tous,
    Recemment j'ai décidé de me remettre au C. Je travaille sur un TOSHIBA Satellite tournant sous windows 7 édition familiale prénium 64 bits avec processeur AMD E-300 APU. Pour éditer mes codes sources j'utilise Notepad++ v6.1.8 encodage en ANSI. Pour compiler ceux ci j'utilise MinGW-64 (gcc v5.3.0 (x86_64-posix-seh-rev0).
    Vu que je me remet doucement j'ai commencé par quelque chose de basique.
    Voici les codes sources posant problème .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
    	char buffer[20];
    	gets(buffer);
    	printf("Hello %s",buffer);
    	return 0;
    }
    ou bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
            puts(argv[0]);
    	return 0;
    }
    Je compile:
    gcc helloworld.c -o bin\helloworld.exe
    Pas d'erreurs à la compilation.
    Mais à chaque fois le programme bloque (je le lance depuis une fenêtre terminal windows).

    Par contre ce code ci ne pose pas de problème et affiche bien 'helloworld' .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
    	printf("Hello %s",argv[0]);
    	return 0;
    }
    Du coup je suis un peu perdu. Ai je choisi une mauvaise version du compilateur non adaptée à mon système du coup le programme planterait à l'exécution?
    Si oui pourquoi alors n'ai je pas de problèmes quand j'utilise printf? Sinon quelle serait l'erreur que j'aurais commise?

    Merci pour vos réponses.

  2. #2
    Membre Expert
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Par défaut
    C'est le programme avec puts qui ne termine pas ? Question idiote mais es-tu sûr de ce que tu compiles et exécutes ? As-tu le même comportement dans un autre terminal (Cygwin, MSYS2...) ?

  3. #3
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Dubitatif du blocage...

    Remarque importante : il ne faut pas utiliser gets() ! Une explication simple ici (http://c.developpez.com/faq/?page=Bo...aveur-de-fgets) et une autre plus complète là (https://gradot.wordpress.com/2013/05...-programmes-c/).

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Par défaut
    Citation Envoyé par Matt_Houston Voir le message
    C'est le programme avec puts qui ne termine pas ? Question idiote mais es-tu sûr de ce que tu compiles et exécutes ? As-tu le même comportement dans un autre terminal (Cygwin, MSYS2...) ?
    Bonsoir c'était les deux premiers programmes qui ne se lançaient pas du tout (pas de problème de programme qui ne se termine pas). Le troisième par contre fonctionnait.

  5. #5
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 251
    Par défaut
    Citation Envoyé par crotinou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
    	char buffer[20];
    	gets(buffer);
    	printf("Hello %s",buffer);
    	return 0;
    }
    Une fois le programme lancé, rien ne se passe si tu tapes au clavier en finissant ta phrase par la touche Entrée ? (en faisant attention de ne pas dépasser la limite de 19 caractères)




    Citation Envoyé par crotinou Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
            puts(argv[0]);
    	return 0;
    }
    J'aurai tendance a dire que c'est normal car si tu lances ton .exe sans paramètre, je ne vois pas ce que puts peut bien t'afficher ???

    Si tu lances ton .exe de cette façon, toujours depuis un terminal Windows, qu'est ce qui se passe ? La chaîne de caractère "Bonjour" étant argv[0].

    A+

  6. #6
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    argv[0] n'est -il pas le nom du programme ?

  7. #7
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 251
    Par défaut
    +1 Bktero,
    Autant pour moi, c'est le nom du programme.

    Donc il n'y a aucune raison que le second programme bloque !

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mars 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Mars 2014
    Messages : 7
    Par défaut problème version gcc?
    D'abord merci pour les réponses.
    Bon je pense que le problème vient de gcc (mauvaise version?). Avec ce nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    int main(int argc,char* argv[])
    {
    	char buffer[20];
    	printf("Avant");
    	gets(buffer);
    	printf("Après");
    	printf("Hello %s",buffer);
    	return 0;
    }
    Après compilation je lance le programme et fait ce qu'il doit faire (peu de choses certes). Je peux entrer une chaine de caractère apres que le programme ait affiché "avant" etc...
    Curieux je relance une compilation sans toucher au code, relance le programme et là rien (pas d'affichage ou d'entrée clavier).
    Autre chose assez curieuse, dans le Gestionnaire des taches je m'aperçois que les processus helloworld.exe restent en mémoire que le programme ait fonctionné ou non.
    Auriez vous entendu parler de tels disfonctionnements avec windows 7? Ou comme je le présume je n'ai pas la bonne version de gcc?

  9. #9
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    Citation Envoyé par crotinou Voir le message
    je pense que le problème vient de gcc
    vraiment ? d'un coté gcc est un logiciel très complexe fait par tout pleins de programmeurs vraiment très expérimentés, de l'autre on a un programmeur C débutant, et tu penses que le problème vient de gcc ?

    vu d'ici je peux me tromper mais je pense que ce que tu prends pour un blocage c'est le fait que tu ne vois simplement pas les lignes qui devraient s'afficher, réponse courte: rajoute un fflush(stdout); derrière ton printf ou ton puts, et prends l'habitude de mettre des \n à la fin de tes chaines dans printf

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD16] Applidis - Lenteur/Blocage du programme au lancement
    Par Tancredi dans le forum WinDev
    Réponses: 7
    Dernier message: 02/12/2012, 20h56
  2. blocage du programme sur méthode getConnexion
    Par smith_dev dans le forum JDBC
    Réponses: 14
    Dernier message: 03/12/2008, 13h27
  3. [TPW] Blocage du programme lors de l'exécution
    Par JetliMohamed dans le forum Turbo Pascal
    Réponses: 1
    Dernier message: 03/01/2008, 00h47
  4. Blocage de programme au demarrage
    Par noussibeau dans le forum Windows Vista
    Réponses: 8
    Dernier message: 09/11/2007, 10h08
  5. blocage de programme
    Par zerocoolyoussef dans le forum Windows
    Réponses: 9
    Dernier message: 19/05/2006, 21h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo