Partage
  • Partager sur Facebook
  • Partager sur Twitter

fgets

Sujet résolu
    12 août 2008 à 17:46:09

    Bonjours,

    Voilà je voudrais savoir comme faire ce code avec un fgets pour remplacer le scanf. Car vous vous en douter le scanf creer quelques probleme. :(
    Voilà mon code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "proto.h"
    
    int main(void)
    {
        int i = 0;
        long NB_JOUEUR = 0;
        Personne joueur[NB_JOUEUR];
    
        FILE *fichier = NULL;
        fichier = fopen("fiche.txt" ,"r+");
    
        printf("Combien de Joueur:");
        scanf("%ld",&NB_JOUEUR);
    
        for(i=0; i<NB_JOUEUR ; i++)
        {
            printf("\nJoueur %d votre nom?", i+1);
            fgets(joueur[i].nom, 100, stdin);
            printf("\nVotre prenom?");
            fgets(joueur[i].prenom, 100, stdin);
            printf("\nVotre adresse?");
            fgets(joueur[i].ville, 1000, stdin);
            printf("\nVotre age?");
            fgets(joueur[i].age, 100, stdin);
            printf("\nVotre sexe?");
            fgets(joueur[i].garcon, 10, stdin);
    
            if(fichier != NULL)
            {
                fprintf(fichier, "\nJoueur %d %s %s %s %s %s", i+1, joueur[i].nom, joueur[i].prenom, joueur[i].ville, joueur[i].age, joueur[i].garcon);
            }
        }
        fclose(fichier);
    
        for(i=0; i<NB_JOUEUR ; i++)
        {
            printf("\nJoueur %d %s %s %s %s %s", i+1, joueur[i].nom, joueur[i].prenom, joueur[i].ville, joueur[i].age, joueur[i].garcon);
        }
    
    
    
        getchar();
        return 0;
    }
    


    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      12 août 2008 à 17:49:27

      bah tu appelles la fonction fgets à la place de scanf.
      • Partager sur Facebook
      • Partager sur Twitter
        12 août 2008 à 17:50:15

        Oui mais, dans ce cas là je ne sais pas comment faire.
        • Partager sur Facebook
        • Partager sur Twitter
          12 août 2008 à 17:51:40

          Cherches et quand tu auras trouvé tu sauras comment faire :) .
          • Partager sur Facebook
          • Partager sur Twitter
            12 août 2008 à 17:58:53

            lol

            le probleme c'est que la fonction fgets à le prototype suivant: char *fgets(char *s, int n, FILE *flux);
            Voici le code que je réalise:
            #include <stdio.h>
            #include <stdlib.h>
            
            #include "proto.h"
            
            int main(void)
            {
                int i = 0;
                char NB_JOUEUR = 50;
                Personne joueur[NB_JOUEUR];
            
                FILE *fichier = NULL;
                fichier = fopen("fiche.txt" ,"r+");
            
                printf("Combien de Joueur:");
                fgets(NB_JOUEUR, 50, stdin);
            
                for(i=0; i<NB_JOUEUR ; i++)
                {
                    printf("\nJoueur %d votre nom?", i+1);
                    fgets(joueur[i].nom, 100, stdin);
                    printf("\nVotre prenom?");
                    fgets(joueur[i].prenom, 100, stdin);
                    printf("\nVotre adresse?");
                    fgets(joueur[i].ville, 1000, stdin);
                    printf("\nVotre age?");
                    fgets(joueur[i].age, 100, stdin);
                    printf("\nVotre sexe?");
                    fgets(joueur[i].garcon, 10, stdin);
            
                    if(fichier != NULL)
                    {
                        fprintf(fichier, "\nJoueur %d %s %s %s %s %s", i+1, joueur[i].nom, joueur[i].prenom, joueur[i].ville, joueur[i].age, joueur[i].garcon);
                    }
                }
                fclose(fichier);
            
                for(i=0; i<NB_JOUEUR ; i++)
                {
                    printf("\nJoueur %d %s %s %s %s %s", i+1, joueur[i].nom, joueur[i].prenom, joueur[i].ville, joueur[i].age, joueur[i].garcon);
                }
            
            
            
                getchar();
                return 0;
            }
            


            Et le compilateur m'affiche l'erreur suivante: C:\Users\Benoit\Desktop\Programmation\exercice\main.c|16|warning: passing arg 1 of `fgets' makes pointer from integer without a cast|
            ||=== Build finished: 0 errors, 1 warnings ===|
            • Partager sur Facebook
            • Partager sur Twitter
              12 août 2008 à 18:02:48

              On peut voir la définition de ta structure ?
              • Partager sur Facebook
              • Partager sur Twitter
                12 août 2008 à 18:04:57

                la voici

                #ifndef DEF_PROTO
                #define DEF_PROTO
                
                typedef struct Personne Personne;
                struct Personne
                {
                    char nom[100];
                    char prenom[100];
                    char ville[1000];
                    char age[100];
                    char garcon[10];
                };
                
                
                #endif
                
                • Partager sur Facebook
                • Partager sur Twitter
                  12 août 2008 à 18:09:35

                  :lol: Tu aurais du regarder la ligne incriminée :
                  fgets(NB_JOUEUR, 50, stdin);
                  


                  NB_JOUEUR ? Mais bien sûr ! ^^

                  EDIT :
                  Ah excuse-moi j'ai cru que c'était une constante...
                  M'enfin c'est bien là le souci !

                  http://www.siteduzero.com/tuto-3-13633 [...] ecurisee.html
                  Relis comment faire pour le convertir en int ;).
                  • Partager sur Facebook
                  • Partager sur Twitter
                    12 août 2008 à 18:36:44

                    Citation : Albert210876

                    Voilà je voudrais savoir comme faire ce code avec un fgets pour remplacer le scanf.


                    Comme indiqué sur ce forum 3 fois par jour, c'est expliqué ici : http://www.siteduzero.com/tuto-3-11181 [...] -a-fgets.html

                    P.S. pourquoi un 's' à 'Bonjour' ? Tu trouves ça logique ?

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Music only !
                      12 août 2008 à 18:45:34

                      Citation : -ed-

                      Citation : Albert210876

                      Voilà je voudrais savoir comme faire ce code avec un fgets pour remplacer le scanf.


                      Comme indiqué sur ce forum 3 fois par jour, c'est expliqué ici : http://www.siteduzero.com/tuto-3-11181 [...] -a-fgets.html

                      P.S. pourquoi un 's' à 'Bonjour' ? Tu trouves ça logique ?


                      J'avoue que moi aussi quand j'écris, j'ai "envie" de mettre un 's' car un 'r' tout seul comme ça pour moi il manque un 's' !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        12 août 2008 à 19:01:10

                        Citation : noob4ever

                        Citation : Pas de titre

                        P.S. pourquoi un 's' à 'Bonjour' ? Tu trouves ça logique ?


                        J'avoue que moi aussi quand j'écris, j'ai "envie" de mettre un 's' car un 'r' tout seul comme ça pour moi il manque un 's' !


                        Parce qu'il y a un s à toujours ? Normal : contraction de 'tous les jours'...

                        Ceci dit, j'ai tendance à mettre un 's' à 'champ' parce qu'il y en a un à 'temps'. Logique dans tout ça ? Euh, joker !
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Music only !
                          12 août 2008 à 19:11:40

                          Oui, dejà merci tous le monde pour votre aide.

                          Pour le 's' après bonjour, c'est bien une manie que j'ai pris je sais pas pourquoi sûrment en rapport avec ce que vous avez dit précédement.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 août 2008 à 20:05:45

                            int main(void)
                            {
                                int i = 0;
                                char NB_JOUEUR = 50;
                                Personne joueur[NB_JOUEUR];
                            


                            Euh ?

                            Si tu veux faire ça proprement, il faut créer une variable nb_joueur de type int, réaliser une saisie (sécurisée si possible), puis ensuite réserver de la mémoire dynamiquement. Ici, tu utilises une feature du C99 appelée VLA (Variable Length Array). Or, cette feature n'est pas correctement implémentée par tous les compilateurs (marquée Broken sur le site de gcc).
                            • Partager sur Facebook
                            • Partager sur Twitter

                            fgets

                            × 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