Partage
  • Partager sur Facebook
  • Partager sur Twitter

pendu generation d'un mot dans un fichier txt

pendu generation d'un mot dans un fichier txt

    21 septembre 2018 à 10:12:55

    Bonjour,

    Je suis en train de faire le TP du pendu et je suis en train de bloquer dès la première étape à savoir, piocher au hasard un mot dans un fichier txt nommé dico.

    Voici ce que j'ai écrit pour l'instant:

    #include<stdio.h>
    #include<stdlib.h>
    #include <time.h>
    #define CHAR_MAX 50
    #ifndef dico
    #define dico
    #endif
    
    
    int genereMot (char *mot)
    
    {
    
        FILE* dico = NULL;
        char *ligne;
        const char MAX = 835, MIN = 1;
        srand(time(NULL));
        *ligne = (rand() % (MAX - MIN + 1)) + MIN;  //choix d'une ligne aleatoire ds la bibliotheque pendu
    
        fopen ("dico", "r");
    
        mot=fgets (ligne, CHAR_MAX, dico);
    
    
    
        return mot;
    }



    J'ai une erreur dès la déclaration de mon pointeur FILE*. qui dit : error: expected identifier or "("

    Cette erreur se répercute sur ma fonction fgets (ligne, CHAR_MAX, dico); et du coup j'ai là aussi une erreur qui dit: error: expected expression (du moins je crois que ça vient de la première erreur).

    Bref, mon fichier est crée et placé dans le même dossier que mon code source, je l'ai défini dans le préprocesseur, je comprends pas le problème du coup. Qu'est ce qui m’échappe?

    -
    Edité par IsaPatchouly 8 octobre 2018 à 11:28:52

    • Partager sur Facebook
    • Partager sur Twitter
      21 septembre 2018 à 10:27:16

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose, ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci d'utiliser la mise en forme de code Image

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour cela, il faut utiliser le bouton Image de l'éditeur, choisir un des langages proposés et coller votre code dans la zone prévue. Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: cpp;">Votre code ici</pre>.

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Help)

      • Partager sur Facebook
      • Partager sur Twitter
        21 septembre 2018 à 12:48:59

        Hello,

        IsaPatchouly a écrit:

        Qu'est ce qui m’échappe?

        Manifestement beaucoup de choses.

        Peux-tu me dire à quoi servent ces lignes:

        #ifndef dico
        #define dico
        #endif

        ? Tu peux enlever les lignes 1 et 3 cela reviendra au même.

        char MAX=835: un char est codé sur 8 bits....

        char *ligne: tu déclares un pointeur sur une chaine de caractère, que tu utilises pour stocker une valeur

        A quoi sert le fopen() ? Tu n'assignes son retour à aucune variable

        Ton fgets() fait ceci: il lit au plus 49 caractères à partir du fichier indiqué par dico (qui est NULL), que tu ranges dans une variable ligne pour laquelle tu n'as pas alloué d'espace mémoire.

        Tu oublies de fermer ton fichier, mais de toute façon, tu en serais bien incapable.

        Bref, il va falloir sérieusement revoir les chapitres précédents....


        Edit: et tenir compte des remarques de AbcAbc6....

        -
        Edité par edgarjacobs 21 septembre 2018 à 17:32:25

        • Partager sur Facebook
        • Partager sur Twitter

        On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent

          28 septembre 2018 à 16:10:33

          Bonjour,

          Pour mettre ton code utilise les balises prévues à cet effet:

          Puis tu entres le code dans la fenêtre pop-up qui vient:

          Je te conseille vivement de relire le chapitre juste avant le TP du Pendu parce que tu n'as pas encore assimilé les bonnes bases pour t'attaquer à ce TP selon ce que edgarjacobs vient de te dire. C'est pas que tu n'en es pas capable, juste que pour le moment ton niveau est insuffisant pour t'attaquer au boss ;) Essaie de maîtriser les choses bout par bout et bien tout comprendre avant de passer à autre chose, on peut tous te donner le corrigé complet de ton code mais est-ce pour le mieux? Ce qui compte c'est ce que toi tu as appris et ce que tu en retires ensuite, pas que ton code marche.

          • Partager sur Facebook
          • Partager sur Twitter

          Malice13

            8 octobre 2018 à 7:44:59

            Bonjour,

            Je vous remercie pour ces encouragements fort sympathiques et je vais reformuler ma question puisque apparemment je n'ai pas été assez claire dans ma question au dessus.

            Donc qu'est ce qui cloche là:

            #include<stdio.h>
            #include<stdlib.h>
            #include <time.h>
            #define CHAR_MAX 50
            #define dico
            
            
            
            int genereMot (char *mot)
            
            {
            FILE* dico = NULL;
            dico = fopen ("dico.txt", "r");
            
            
            
            
            	return 0;
            }

            Ne vous emballez pas, ce n'est absolument pas terminé, d'ailleurs il est compliqué pour moi d'aller plus loin si j'ai une erreur qui s'annonce dès la première ligne.

            Pour ceux qui seraient tentés de me dire que je dois relire mon cours je vais vous citer le chapitre qui parle de l'ouverture d'un fichier, à ce stade là on est dans un jeu de "cherchez les différences".

            int main(int argc, char *argv[])
            {
                FILE* fichier = NULL;
            
                fichier = fopen("test.txt", "r+");
            
                return 0;
            }





            • Partager sur Facebook
            • Partager sur Twitter
              8 octobre 2018 à 8:12:14

              heu la différence c'est le define, tu sais ce que ça fait ? eh bien après que le préprocesseur soit passé ton code ressemble à ça :
              #include<stdio.h>
              #include<stdlib.h>
              #include <time.h>
              #define CHAR_MAX 50
              #define dico
                
              int genereMot (char *mot)
               
              {
              FILE* = NULL;
              = fopen ("dico.txt", "r");
               
               
               
               
                  return 0;
              }

               Sinon le nom de ta fonction n'est pas correcte, tu ne génères pas un mot, tu récupères un mot, ce serait plutôt readWord() ou getWord(), fait aussi attention à ton indentation

               EDIT : je vais te filer un exemple de code pour ouvrir ton fichier txt  :

              #include<stdio.h>
              #include<stdlib.h>
              #include <time.h>
               
              int getWord (char *mot)
              {
              	FILE* dico = NULL;
              	dico = fopen ( "dico.txt", "r" );
              
              	if ( dico <= 0 )
              	{
              		printf ( "can't open file\n" );
              		return ( __LINE__ );
              	}
              
              	fclose ( dico );
              	return ( 0 );
              }

              -
              Edité par ox223252 8 octobre 2018 à 8:16:48

              • Partager sur Facebook
              • Partager sur Twitter

              la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

              Mon GitHub

                8 octobre 2018 à 8:58:24

                Bonjour, mon message précédant n'est pas la pour faire joli, merci de modifier me titre du sujet, dans le cas contraire je serrais contrains de fermer le sujet. 

                • Partager sur Facebook
                • Partager sur Twitter
                  8 octobre 2018 à 11:18:03


                  Le titre: "Help: pendu generation d'un mot dans un fichier txt" c'est le "Help" qui vous dérange? si je mets "besoin d'aide s'il vous plaît" ça vous convient mieux?

                  "AbcAbc6 a écrit:

                  Bonjour, mon message précédant n'est pas la pour faire joli, merci de modifier me titre du sujet, dans le cas contraire je serrais contrains de fermer le sujet. "

                  "ox223252 a écrit:

                  heu la différence c'est le define, tu sais ce que ça fait ? eh bien après que le préprocesseur soit passé ton code ressemble à ça"


                  Effectivement j'avais mal compris le define, je croyais qu'on devait annoncer les fichiers avec mais en relisant le cours j'ai compris pourquoi je me suis plantée.

                  Bon ça c'est fait j'ai plus qu'à terminer ma fonction.

                  Merci en tout cas pour ton coup de main sachant que je devrais pas tarder à revenir chouiner pour une autre raison quelconque.




                  -
                  Edité par IsaPatchouly 8 octobre 2018 à 11:22:53

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 octobre 2018 à 11:26:48

                    C'est le "Help" en titre principal qui ne va pas !

                    Ça ne décrit absolument pas ta question. 

                    Les forums sont là pour apporter de l'aide, tout le monde le sait, donc inutile de le répéter dans le titre de ta question !

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 octobre 2018 à 11:34:12 - Message modéré pour le motif suivant : Message complètement hors sujet


                        8 octobre 2018 à 12:10:23

                        IsaPatchouly a écrit:

                        Effectivement j'avais mal compris le define, je croyais qu'on devait annoncer les fichiers avec mais en relisant le cours j'ai compris pourquoi je me suis plantée.

                        -
                        Edité par IsaPatchouly il y a 32 minutes


                        Les barrières d'inclusions (titrez officiel de ce que tu avais écrit au début), ça ne sert pas à définir le fichier (en fait je vois même pas ce que ça peux vouloir dire ^^). Non les barrière d'inclusion tu les places pour éviter les inclusion multiples ou en boucle d'un même fichier, donc ça ne se place que dans les fichier *.h qui sont les seuls a pour être inclus.

                        Genre A inclus B et B inclus A ce qui ferais ( sans c'est barrières ) A -> B -> A ->B -> A … et le compilateur qui crash ^^.

                        IsaPatchouly a écrit:

                        oui je me sens profondément aidée sur ce topic, emplie par la bienveillance, la bonne humeur, la compréhension,  un vrai bonheur. :)

                        C'est des tacles pleins d'amour et de gentillesse :ange:. Sinon c'est très récurent que les gens ne placent pas le code dans les balises, place un titre qui ne dit rien (on ne vois que le titre, pas le sous titre dans le forum) et ça devient lassant à la longue, en faite tu as pris pour un peut tout le monde je crois ^^.

                        Bonne continuation quand même, et place ton sujet en résolut s'il l'est.

                        • Partager sur Facebook
                        • Partager sur Twitter

                        la connaissance est une chose qui ne nous appauvrit pas quand on la partage.

                        Mon GitHub

                          8 octobre 2018 à 12:45:01


                          ox223252 a écrit:

                          Les barrières d'inclusions (titrez officiel de ce que tu avais écrit au début), ça ne sert pas à définir le fichier (en fait je vois même pas ce que ça peux vouloir dire ^^). Non les barrière d'inclusion tu les places pour éviter les inclusion multiples ou en boucle d'un même fichier, donc ça ne se place que dans les fichier *.h qui sont les seuls a pour être inclus.

                          Genre A inclus B et B inclus A ce qui ferais ( sans c'est barrières ) A -> B -> A ->B -> A … et le compilateur qui crash ^^.

                          C'est effectivement ce qui m'avait enduit en erreur du coup j'avais tout mélangé.

                          Mais bref, je le marquerais comme résolu quand j'aurais réussit à terminer ma fonction de A à Z parce que apparemment c'est pas gagné pour moi.





                          -
                          Edité par IsaPatchouly 8 octobre 2018 à 12:46:17

                          • Partager sur Facebook
                          • Partager sur Twitter
                            8 octobre 2018 à 14:49:15

                            IsaPatchouly a écrit:


                            Mais bref, je le marquerais comme résolu quand j'aurais réussit à terminer ma fonction de A à Z parce que apparemment c'est pas gagné pour moi.

                            effectivement, avec

                            char *ligne;
                            
                            *ligne = random(....);
                            

                            tu n'est pas sortie de l'auberge.



                            • Partager sur Facebook
                            • Partager sur Twitter

                            pendu generation d'un mot dans un fichier txt

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown