Partage
  • Partager sur Facebook
  • Partager sur Twitter

Gestion de fichiers

créer ses fichiers

Sujet résolu
    17 février 2006 à 22:06:21

    Bonsoir,

    Depuis que j'ai terminé ma lecture du dernier cours de M@téo, il m'est venu à l'esprit de faire un petit programme pour m'entraîner, le voici :
    #include <stdio.h>
    #include <stdlib.h>

    int
    main(int argc, char *argv[])
    {
            char nomDuFichier[100], notes[1000];
            FILE *fichier = NULL;

            printf("Entrez le nom du fichier :");
            scanf("%s", nomDuFichier);

            fichier = fopen(nomDuFichier, "r+");
            if (fichier != NULL) {
                    printf("Entrez les données que vous voulez noter :");
                    scanf("%s", notes);
                    fprintf(fichier, "%s", notes);
                    fclose(fichier);
            } else {
                    printf("Une erreur est survenue lors de l'ouverture du fichier. \n");
            }

            system("PAUSE");
            return 0;
    }


    Comme vous pouvez le voir, il a pour but de créer un fichier avec des données entrées par l'utilisateur.
    Mais j'aimerais attirer votre attention sur une ligne :
      fichier = fopen(nomDuFichier, "r+");

    Ici, je veux créer un fichier, avec le nom qui est donné par l'utilisateur, mais ma solution ne marche pas. Pouvez vous m'expliquer comment faire?

    Merci !
    • Partager sur Facebook
    • Partager sur Twitter
      17 février 2006 à 22:11:53

      +1 il y a une astuce à faire mais je ne la connais pas, j'attends une réponse également =)
      • Partager sur Facebook
      • Partager sur Twitter
        17 février 2006 à 22:18:59

        Bah soit tu mes w+ au lieu de r+, et le fichier sera effacé à chaque utilisation, soit tu mets a+ au lieu de r+, et ce que tu écriras s'ajoutera automatiquement à la fin du fichier.

        À toi de voir ce que tu veux.
        • Partager sur Facebook
        • Partager sur Twitter
          17 février 2006 à 22:23:23

          Non, tu n'as pas compris, je veux qu'à chaques fois, il crée un fichier différent, un fichier sous le nom que l'utilisateur donne au départ !
          • Partager sur Facebook
          • Partager sur Twitter
            17 février 2006 à 22:26:09

            En gros, l'utilisateur donne un nom qui serra utiliser pour le nom de fichier!
            • Partager sur Facebook
            • Partager sur Twitter
              17 février 2006 à 22:33:09

              Comment ca ne marche pas ?
              • Partager sur Facebook
              • Partager sur Twitter
                17 février 2006 à 22:35:34

                fopen(filename, "w");

                Où est le problème ? :/ C'est dans le cours.
                • Partager sur Facebook
                • Partager sur Twitter
                  17 février 2006 à 22:36:30

                  au faites:

                  printf("Entrez les données que vous voulez noter :");

                  printf("Entrez les donn%ces que vous voulez noter :",130);


                  Bluestorm: bah vi, ca ne marche pas! On veut que l'utilisateur entre un nom de fichier qui serra utiliser pour être crée, exemple il rentre: Debile.txt, et cela crée: Debile.txt avec les infos qu'il a mit dedans.

                  Elentar: ca ne marche pas =)
                  • Partager sur Facebook
                  • Partager sur Twitter
                    17 février 2006 à 22:37:07

                    Le problème c'est qu'il veut que le programme lui demande le nom du fichier, et qu'ensuite il enregistre ce fichier.

                    Exemple : l'utilisateur rentre comme nom "pingouin", le programme crée un fichier "pingouin"

                    Or, avec son code, ça ne marche pas :\

                    EDIT : grillé ^^
                    • Partager sur Facebook
                    • Partager sur Twitter
                      17 février 2006 à 22:41:11

                      char filename[32] = "Debile.txt";
                      FILE *fichier = fopen(filename, "w");

                      Ca marchera très bien, hein.
                      Après on affecte la valeur que l'on veut à filename.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        17 février 2006 à 22:41:35

                        Ca marcherait pas de faire tout simplement
                        fichier = fopen ("%s", nomDuFichier, "w+")
                        ?
                        • Partager sur Facebook
                        • Partager sur Twitter
                          17 février 2006 à 22:43:57

                          Et bien oui, vous avez raison, avec "w", ca marche très bien!
                          Merci pour votre aide !
                          • Partager sur Facebook
                          • Partager sur Twitter
                            17 février 2006 à 22:47:09

                            A croire que je le fais expret, pourriez vous poster un code qui marche car j'ai beau modifier, ca ne marche pas^^ encore dsl :p
                            • Partager sur Facebook
                            • Partager sur Twitter
                              17 février 2006 à 22:53:40

                              #include <stdio.h>
                              #include <stdlib.h>

                              int
                              main(int argc, char *argv[])
                              {
                                      char nomDuFichier[100], notes[1000];
                                      FILE *fichier = NULL;

                                      printf("Entrez le nom du fichier :");
                                      scanf("%s", nomDuFichier);

                                      fichier = fopen(nomDuFichier, "w");
                                      if (fichier != NULL) {
                                              printf("Entrez les données que vous voulez noter :");
                                              scanf("%s", notes);
                                              fprintf(fichier, "%s", notes);
                                              fclose(fichier);
                                      } else {
                                              printf("Une erreur est survenue lors de l'ouverture du fichier. \n");
                                      }

                                      system("PAUSE");
                                      return 0;
                              }

                              Voila Gambit2099
                              • Partager sur Facebook
                              • Partager sur Twitter
                                17 février 2006 à 22:55:56

                                Merci, enfaites, j'avais bien modifier mais mes fichiers étaient par ordre 'alphabétique' et pas par 'modifier le', donc ca marche.
                                Merci =)
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  17 février 2006 à 23:00:30


                                  #include <stdio.h>
                                  #include <stdlib.h>
                                  #include <string.h>

                                  int main(int argc, char *argv[])
                                  {
                                      char filename[100] = {0};
                                      char extension[] = ".txt";
                                      int age = 0;
                                      char nom[100] = {0};
                                     
                                  printf ("salut ! quel age as-tu ?");
                                  scanf ("%ld", &age);
                                  printf ("comment tu t'appelles ?");
                                  scanf ("%s", nom);

                                  strcat(nom, extension); //la chaine nom vaudra nom.txt

                                  FILE *fichier = fopen(nom, "w");


                                  if (fichier != NULL)
                                  {
                                              fprintf(fichier, "l'utilisateur a %ld ans.", age);
                                           
                                              fclose(fichier);
                                              }
                                     
                                     
                                   
                                    system("PAUSE");     
                                    return 0;
                                  }



                                  au fait :

                                  Citation : gambit2099



                                  printf("Entrez les donn%ces que vous voulez noter :",130);



                                  t'en as d'autres des comme ça ? où peut on les trouver ?
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    18 février 2006 à 0:24:48

                                    Tu cherche sur google la table de caractere ascii, une fois trouver tu cherche le numéro correspondant au caractère.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      18 février 2006 à 10:27:45

                                      Ange_Mauvais a donné la solution, et moi je termine par le lien:
                                      http://www.lookuptables.com/
                                      Voir tableau en bas ;)

                                      A force on retient que 'é' = 130, 'è' = 138... etc =)
                                      ++
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        18 février 2006 à 11:24:10

                                        Ouais, mais ca c'est vachement dépendant du jeu de charactères utilisé et tout, je vous conseille de pas trop faire mumuse avec ça.
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                        Anonyme
                                          18 février 2006 à 14:25:46

                                          Un petit conseil : pour la taille du tableau à créer, utilisez FILENAME_MAX et vous aurez un tableau de la taille maximum que peut avoir un nom de fichier ;)
                                          char fichier[FILENAME_MAX];
                                          fgets (fichier, FILENAME_MAX - 2, stdin);
                                          fopen (fichier, mode);
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Gestion de fichiers

                                          × 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