Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Ecriture dans un fichier] Caractères très bizard...

"î‘|8’|ÿÿÿÿ2’|«’|ë’|" j'y comprend rien !

    13 octobre 2006 à 21:38:22

    Salut à tous ! Pour m'entrainer ,toujours sur le cours de m@téo21, j'ai voulus tester la fonction d'écriture dans un fichier (dans le but d'améliorer le plus ou moin...). J'ai fait ce code (main.c): #include <stdio.h> #include <stdlib.h> #include "main.h" //Inclusion du fichier des structures int main(int argc, char *argv[]) { long pseudoOK = 0; do { Personne joueur1, joueur2; printf("JOUEUR 1Quel est votre prenom ? "); scanf("%s", joueur1.prenom); printf("Votre pseudo ? "); scanf("%s", joueur1.pseudo); printf("JOUEUR 2Quel est votre prenom ? "); scanf("%s", joueur2.prenom); printf("Votre pseudo ? "); scanf("%s", joueur2.pseudo); printf("JOUEUR 1: Votre prenom est %s et votre pseudo est: %s", joueur1.prenom, joueur1.pseudo); printf("JOUEUR 2: Votre prenom est %s et votre pseudo est: %s", joueur2.prenom, joueur2.pseudo); printf("Ces données sont-elles bonnes? (1. oui, 2. non) "); // Confirmation scanf("%ld", &pseudoOK); } while(pseudoOK != 1); if(pseudoOK == 1) // If d'enregistrement des données { Personne joueur1, joueur2; historiquePseudo(joueur1.pseudo, joueur2.pseudo); } printf("OK !"); return 0; } int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100]) { FILE *fichier = NULL; fichier = fopen("pseudo.txt", "w"); if (fichier != NULL) { fprintf(fichier, "[joueur1.Pseudo] = %s[joueur2.Pseudo] = %s", JoueurUnPseudo, JoueurDeuxPseudo); fclose(fichier); } else { // On affiche un message d'erreur si on veut printf("Impossible d'ouvrir le fichier"); } return 0; } main.h: int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100]); typedef struct Personne Personne; struct Personne { char pseudo[100]; char prenom[100]; }; Tout le traitement des données fonctionnent jusqu'a l'écriture dans le fichier ! Ca écrit bien le texte que j'ai rentré, mais pas les variables ( a la place de "vincdu77", ca a enregistrer: "î‘|8’|ÿÿÿÿ2’|«’|ë’|", alors j'ai du me planter quelque part, mais j'vois pas où... 2nd question: j'ai vraiment besoin de crée un struct personne si c'est pour écrire dans un fichier? (bon, pour cette exemple, c'était juste pour m'entrainer... Merci d'avance ! (PS: ya un beug dans la mise en page ! j'peux pas mettre de balise 'code', et ca fait un seul bloc !)
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      13 octobre 2006 à 21:40:24

      Utilise les balises code pour mettre ton code pi indente le ;)
      • Partager sur Facebook
      • Partager sur Twitter
        13 octobre 2006 à 21:41:40

        Désolé TheDead Master mais les balises y sont, j'y avais pensé mais ca fait un seul bloc tout pas beau... sans balises, bizard !!
        • Partager sur Facebook
        • Partager sur Twitter
          13 octobre 2006 à 21:41:51

          AAAAAAAAHHH c'est illisible mes yeuuuux o_O
          • Partager sur Facebook
          • Partager sur Twitter
            13 octobre 2006 à 21:42:06

            utilise les balises de code C
            parce que la on ne voit vraiment rien
            et on ne peut pas t'aider
            • Partager sur Facebook
            • Partager sur Twitter
              13 octobre 2006 à 21:45:29

              Salut à tous !
              Pour m'entrainer ,toujours sur le cours de m@téo21, j'ai voulus tester la fonction d'écriture dans un fichier (dans le but d'améliorer le plus ou moin...). J'ai fait ce code (main.c):
              #include <stdio.h>
              #include <stdlib.h>
              #include "main.h" //Inclusion du fichier des structures


              int main(int argc, char *argv[])
              {
                  long pseudoOK = 0;

                  do
                  {
                  Personne joueur1, joueur2;

                  printf("JOUEUR 1\n\nQuel est votre prenom ? ");
                  scanf("%s", joueur1.prenom);
                  printf("Votre pseudo ? ");
                  scanf("%s", joueur1.pseudo);

                  printf("\nJOUEUR 2\n\nQuel est votre prenom ? ");
                  scanf("%s", joueur2.prenom);
                  printf("Votre pseudo ? ");
                  scanf("%s", joueur2.pseudo);

                  printf("\n\nJOUEUR 1: Votre prenom est %s et votre pseudo est: %s\n", joueur1.prenom, joueur1.pseudo);
                  printf("JOUEUR 2: Votre prenom est %s et votre pseudo est: %s\n\n", joueur2.prenom, joueur2.pseudo);

                  printf("Ces données sont-elles bonnes? (1. oui, 2. non) "); // Confirmation
                  scanf("%ld", &pseudoOK);
                  }
                  while(pseudoOK != 1);

                  if(pseudoOK == 1) // If d'enregistrement des données
                  {
                      Personne joueur1, joueur2;
                      historiquePseudo(joueur1.pseudo, joueur2.pseudo);
                  }


                  printf("OK !");

                  return 0;
              }


              int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100])
              {
                  FILE *fichier = NULL;

                  fichier = fopen("pseudo.txt", "w");

                  if (fichier != NULL)
                  {
                      fprintf(fichier, "[joueur1.Pseudo] = %s\n[joueur2.Pseudo] = %s", JoueurUnPseudo, JoueurDeuxPseudo);

                      fclose(fichier);
                  }
                  else
                  {
                      // On affiche un message d'erreur si on veut
                      printf("Impossible d'ouvrir le fichier");
                  }


                  return 0;
              }


              Et le main.h

              int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100]);

              typedef struct Personne Personne;
              struct Personne
              {
                  char pseudo[100];
                  char prenom[100];
              };


              Désolé pour ce petit désagrément, mais comme vous le voyez, j'ai dû crée une nouvelle réponse pour que ca prêne en considération !
              • Partager sur Facebook
              • Partager sur Twitter
                13 octobre 2006 à 21:53:51

                je ne voit pas l'interet de mettre un prototype dans le headers
                • Partager sur Facebook
                • Partager sur Twitter
                  13 octobre 2006 à 21:56:39

                  historiquePseudo() est définie après l'appel de la fonction, donc il faut un prototype avant non?
                  dans le header, c'est juste pour m'habituer !
                  • Partager sur Facebook
                  • Partager sur Twitter
                    13 octobre 2006 à 21:57:01

                    Il te manque le prototype
                    int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100]);
                    avant
                    int main(int argc, char *argv[])


                    il me semble que mettre int main() marche aussi
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      13 octobre 2006 à 21:57:07

                      Citation : akhenathon

                      je ne voit pas l'interet de mettre un prototype dans le headers



                      C'est de la programmation modulaire

                      Edit => saphir, il l'a mis dans le header main.h ;)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        13 octobre 2006 à 21:59:29

                        oui mais dans le .h cela ne sert strictement a rien
                        puisque normalement le .h est include en haut du fichier

                        a dsl j'avait pas vu la fonction qui était aprés
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          13 octobre 2006 à 22:08:19

                          je viens de tester ton code, et il marche bien chez moi.

                          console:

                          JOUEUR 1

                          Quel est votre prenom ? dead
                          Votre pseudo ? master

                          JOUEUR 2

                          Quel est votre prenom ? azer
                          Votre pseudo ? ty


                          JOUEUR 1: Votre prenom est dead et votre pseudo est: master
                          JOUEUR 2: Votre prenom est azer et votre pseudo est: ty

                          Ces données sont-elles bonnes? (1. oui, 2. non) 1
                          OK !


                          Fichier txt:

                          [joueur1.Pseudo] = ty
                          [joueur2.Pseudo] = master


                          Sinon, nan tu n'es pas obligé de faire une structure pour écrire dans un fichier.

                          Edit: t'as juste inversé les pseudos du joueur 1 et 2
                          • Partager sur Facebook
                          • Partager sur Twitter
                            13 octobre 2006 à 22:18:56

                            Perso, chez moi, ca marche toujours pas !
                            Par contre, où se trouve mon inversion? car je vois bien que c'est quand on écrit dans le fichier, mais j'vois pas où dans le code !
                            • Partager sur Facebook
                            • Partager sur Twitter
                              13 octobre 2006 à 22:21:54

                              Tu as quoi comme messages dans la zone d'erreures du compilateur?
                              • Partager sur Facebook
                              • Partager sur Twitter
                                13 octobre 2006 à 22:23:45

                                Je n'ai aucun message, car tout ce déroule bien d'ailleur... l'écriture... sauf que ce n'est pas ce qu'il faut !

                                sinon, dans build log (je taff avec code::blocks):
                                Project : Console application
                                Compiler : GNU GCC Compiler (called directly)
                                Directory : C:\Documents and Settings\Vincent\Mes documents\Programmation\tableau struc\
                                --------------------------------------------------------------------------------
                                Checking for existence: C:\Documents and Settings\Vincent\Mes documents\Programmation\tableau struc\console.exe
                                Executing: C:\Program Files\CodeBlocks/console_runner.exe "C:\Documents and Settings\Vincent\Mes documents\Programmation\tableau struc\console.exe" (in .)
                                Process terminated with status 0 (0 minutes, 27 seconds)
                                0 errors, 0 warnings
                                • Partager sur Facebook
                                • Partager sur Twitter
                                Anonyme
                                  13 octobre 2006 à 22:23:47

                                  Sort Personne joueur1, joueur2; de la boucle ( met le apres le long ) et retire l'autre Personne joueur1, joueur2; qui se trouve dans la condition apres la boucle
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    13 octobre 2006 à 22:28:59

                                    Après changement, tout fonctionne !!!

                                    #include <stdio.h>
                                    #include <stdlib.h>
                                    #include "main.h" //Inclusion du fichier des structures


                                    int main(int argc, char *argv[])
                                    {
                                        long pseudoOK = 0;
                                        Personne joueur1, joueur2;
                                        do
                                        {


                                        printf("JOUEUR 1\n\nQuel est votre prenom ? ");
                                        scanf("%s", joueur1.prenom);
                                        printf("Votre pseudo ? ");
                                        scanf("%s", joueur1.pseudo);

                                        printf("\nJOUEUR 2\n\nQuel est votre prenom ? ");
                                        scanf("%s", joueur2.prenom);
                                        printf("Votre pseudo ? ");
                                        scanf("%s", joueur2.pseudo);

                                        printf("\n\nJOUEUR 1: Votre prenom est %s et votre pseudo est: %s\n", joueur1.prenom, joueur1.pseudo);
                                        printf("JOUEUR 2: Votre prenom est %s et votre pseudo est: %s\n\n", joueur2.prenom, joueur2.pseudo);

                                        printf("Ces données sont-elles bonnes? (1. oui, 2. non) "); // Confirmation
                                        scanf("%ld", &pseudoOK);
                                        }
                                        while(pseudoOK != 1);

                                        if(pseudoOK == 1) // If d'enregistrement des données
                                        {

                                            historiquePseudo(joueur1.pseudo, joueur2.pseudo);
                                        }


                                        printf("OK !");

                                        return 0;
                                    }


                                    int historiquePseudo(char JoueurUnPseudo[100], char JoueurDeuxPseudo[100])
                                    {
                                        FILE *fichier = NULL;

                                        fichier = fopen("pseudo.txt", "w");

                                        if (fichier != NULL)
                                        {
                                            fprintf(fichier, "[joueur1.Pseudo] = %s\n[joueur2.Pseudo] = %s", JoueurUnPseudo, JoueurDeuxPseudo);

                                            fclose(fichier);
                                        }
                                        else
                                        {
                                            // On affiche un message d'erreur si on veut
                                            printf("Impossible d'ouvrir le fichier");
                                        }


                                        return 0;
                                    }


                                    Voilà et merci !!
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [Ecriture dans un fichier] Caractères très bizard...

                                    × 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