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 :

Code qui n'affiche absolument rien..


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut Code qui n'affiche absolument rien..
    Bonjour!!!

    Je suis débutante en C, je suis un cours sur internet... J'ai fait un code qui ne sert pour l'instant qu'a générer un mot aléatoire à partir d'un mini-dictionnaire... Le problème est que le code n'affiche absolument rien, même pas le "Appuyez sur une touche pour continuer..." ... RIEN!!! Et je ne comprend pas pourquoi

    main.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <string.h>
    #include "dico.h"
     
    int main(int argc, char *argv[])
    {
     
      char mot_secret[100] = {0};
      if(!choisir_mot(mot_secret))
      {
      printf("ERREUR");
      }
      printf("%s", mot_secret);
     
      system("PAUSE");	
      return 0;
    }
    dico.c
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #include <string.h>
    #include "dico.h" 
     
    int choisir_mot(char *mot_choisi)
    {
        FILE* dico = NULL;
     
        long nb_mots = 0, num_mot = 0;
        int caractere = 0;
     
        dico = fopen("dico.txt", "r");
        if(dico == NULL)
        {
           exit(0);
        }
        do
        {
           caractere = fgetc(dico);
           if (caractere == '\n')
           {
             nb_mots++;
           }
        } while(caractere != EOF);
     
          num_mot = nombre_aleatoire(nb_mots);
     
          while(num_mot > 0)
          {
             rewind(dico);
             caractere = fgetc(dico);
             if(caractere == '\n')
             {
               num_mot--;
             }
          }
          fgets(mot_choisi, 100, dico);
          mot_choisi[strlen(mot_choisi) - 1] = '\0';
          fclose(dico);
          return 1;
    }
     
    long nombre_aleatoire(long max)
    {
         srand(time(NULL));
         return(rand() % max);   
    }
    dico.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #ifndef DEF_DICO
    #define DEF_DICO
     
    int choisir_mot(char *mot_choisi);
    long nombre_aleatoire(long max);
     
    #endif

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Points : 41
    Points
    41
    Par défaut
    quand tu fais un printf , mais le caractere '\n' a la fin ou alors fais un fflush(stdout). Sans cela, tout reste dans le buffer.

    exemple :

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Hmm ok mais, ça change rien

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Ton programme ne trouve sans doute pas dico.txt

    Résultat, ta fonction choisir_mot() appelle exit(), ce qui est de la programmation de goret niveau 9 (Échelle de Goret) (déjà que pour moi, cette fonction ne devrait pas exister...).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Bah non, dico.txt est bien là, dans le même dossier que l'executable

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Remplace quand même exit(0) par return 0, et on verra bien.

    PS: Si tu utilises Visual, sache que le dossier courant est celui du projet (et non celui de sortie) quand tu appelles depuis visual...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Ok j'ai remplacé les exit, et le projet est dans le même dossier que l'executable, donc le même que dico.txt... Et j'utilise Dev-C++ de toute façon!

    Rien n'y fait!!! Toujours RIEN!!!

  8. #8
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Si tu rajoutes un affichage et un system "pause" avant l'appel à choisir_mot(), ça marche, au moins ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    En fait non, maintenant il affiche rien une fois, et l'autre fois... il n'affiche que "Appuyez sur une touche pour continuer" ... il alterne les 2

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Médinoc
    Si tu rajoutes un affichage et un system "pause" avant l'appel à choisir_mot(), ça marche, au moins ?
    Ok j'ai ajouté un printf("salut") et un system("PAUSE")... Maintenant ça affiche salut Appuyez sur une touche pour continuer... j'appuie sur une touche, et il me remet le Appuyer etc...

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Je peux voir comment est ton main() à présent ?

    PS: Rajoute un \n à la fin de tes printf(), si ce n'est pas déjà fait.

    Edit (cross post) : OK, ça a l'air plutôt normal. Enfin une bonne nouvelle.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    int main(int argc, char *argv[])
    {
     
      char mot_secret[100] = {0};
      printf("salut");
      system("PAUSE");
      if(!choisir_mot(mot_secret))
      {
      printf("ERREUR\n");
      return 0;
      }
      printf("%s\n", mot_secret);
     
      system("PAUSE");	
      return 0;
    }

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Il faut un system("PAUSE") avant chaque return du main().
    Rajoutes-en un entre le printf("ERREUR\n") et le return 0.

    (tu devrais pouvoir supprimer celui du salut, maintenant).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Ok c'est fait, il affiche maintenant salut... et c'est tout!

  15. #15
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Essaie avec ce code (j'ai pu faire une erreur, je n'ai pas de quoi le compiler ici)
    Code C non-testé : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /* Pas besoin de 
       int main(int argc, char *argv[])
       si on ne les utilise pas */
    int main(void)
    {
    	char mot_secret[100] = {0};
    	printf("salut\n");
     
    	printf("Choix d'un mot...")
    	if(!choisir_mot(mot_secret))
    	{
    		printf("ERREUR\n");
    	}
    	else
    	{
    		printf("OK\n")
    		printf("Mot : %s\n", mot_secret);
    	}
    	system("PAUSE");	
    	return 0;
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Résultat: Choix d'un mot...

    C'est tout!!

  17. #17
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Que veux-tu dire par "C'est tout" ?
    La fenêtre se ferme juste après, ou bien tu as la pause ?
    Normalement, le code est voué à afficher ERREUR ou OK après le retour de choisir_mot(). Si elle ne le fait pas, c'est que la fonction ne retourne pas.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  18. #18
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Ça affiche Choix d'un mot... et après rien, pas d'erreur, pas de pause, pas de fermeture de programme... absolument rien, noir total!!!

  19. #19
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Et quand tu tentes de fermer le programme, on te dit qu'il est planté, non?

    Parce qu'on dirait bien que le programme plante dans choisir_mot()...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  20. #20
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2006
    Messages : 12
    Points : 1
    Points
    1
    Par défaut
    Meme pas... il ferme sans dire un mot

Discussions similaires

  1. Treeview n'affiche absolument rien
    Par knuj0 dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 20/02/2010, 11h02
  2. Réponses: 1
    Dernier message: 29/04/2007, 18h44
  3. SplashScreen qui n'affiche rien ?
    Par Baptiste Wicht dans le forum Interfaces Graphiques en Java
    Réponses: 14
    Dernier message: 26/06/2006, 14h15
  4. [EasyPHP] code php qui s'affiche
    Par moonia dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 9
    Dernier message: 11/04/2006, 11h01
  5. [LG]Programme qui n'affiche rien
    Par ousunas dans le forum Langage
    Réponses: 4
    Dernier message: 17/02/2004, 19h38

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