Partage
  • Partager sur Facebook
  • Partager sur Twitter

C - passage à la ligne dans un fwrite

impossible de passer a la ligne avec un fwrite

    22 février 2024 à 16:53:55

    bonjour,

    j'ai un programme qui parcours toute l'arborescence d'un répertoire et en extrait tous les noms de fichiers (+chemin).
    il écrit ensuite dans un fichier texte , afin de pouvoir comparer avec une autre répertoire.

    ce qui pose problème est que le fwrite écrit tout à la suite dans le fichier texte ... j'aimerais pouvoir passer à la ligne après chaque nom de fichier.

    voila le bout de code concerné ou il y a le fwrite:

    merci de votre aide !

    ---------------------------------------------------------------

    // parcours du repertoire ////////////////////////////////////

    void browse_directory(DIR *directory, char *path,FILE* output_file)

    {

        directory = open_directory(path);                                   

        struct dirent *entity=NULL;                                         

        seekdir(directory,2);                                               

        while( (entity=readdir(directory)) != NULL  )                       // Tant que le répertoire courant n'a pas été entièrement parcouru

        {

            char *current_path = get_current_path(path, entity->d_name);    // On récupère le chemin de l'entité(fichier ou dossier) du répertoire courant

            if ( is_directory(current_path) != NULL )                       // Si l'entité est un dossier

            {

                printf("\n[DIR] %s", current_path);

                browse_directory(directory, current_path, output_file);                  // Appel récursif de la fonction parcourir dossier

            }

            else // Sinon c'est un fichier

            {

               printf("\n %s", current_path);

               fwrite(current_path, 1, strlen(current_path), output_file);

            }

        }

    }






    • Partager sur Facebook
    • Partager sur Twitter
      22 février 2024 à 17:44:59

      Salut,

      Si tu veux écrire un fichier texte, utilise plutôt fprintf  (et avec un \n qui va bien à la fin)

      fwrite pourrait le faire, mais on utilise fwrite pour écrire directement en binaire. 

      • Partager sur Facebook
      • Partager sur Twitter

      Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

        22 février 2024 à 19:29:44

        Bonjour, Merci de lire les règles du forum AVANT de créer un sujet.

        Le message qui suit est une réponse automatique activée par un membre de l'équipe de modération. 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 de colorer votre code à l'aide du bouton Code </>

        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  </> 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: php;">Votre code ici</pre>.

        Merci de modifier votre message d'origine en fonction.

        Liens conseillés

        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2024 à 9:17:17

          > Merci de colorer votre code à l'aide du bouton Code > C'est moi, ou le forum est complètement dézingué ? Je ne peux plus poster de code avec la balise code > et il n'y a pas que ça ...
          • Partager sur Facebook
          • Partager sur Twitter
          ...
            8 mars 2024 à 10:09:07

            rouIoude a écrit:

            C'est moi, ou le forum est complètement dézingué ? Je ne peux plus poster de code avec la balise code > et il n'y a pas que ça ...

            Il y a quelques jours oui ça déconnait grave, mais maintenant tout semble fonctionner.



            • Partager sur Facebook
            • Partager sur Twitter
              8 mars 2024 à 10:15:12

              J'ai toujours le problème. Testé sur 2 PC différents avec 3 navigateurs différents.

              Edit : Résolu en effaçant les données de navigations.

              -
              Edité par rouIoude 8 mars 2024 à 15:30:24

              • Partager sur Facebook
              • Partager sur Twitter
              ...
                10 mars 2024 à 20:28:21

                Genre   fwrite("\n", 1, 1, outfile);

                C'est un usage maladroit, quelle idée d'aller chercher des complications quand on peut faire : fprintf(outfile, "\n"); ou fputs ("\n", outfile);  ou fputc,...

                Fwrite, c'est pour envoyer un certain nombre de blocs d'une certaine taille. Ici on veut envoyer 1 caractère.

                Enfin bref, pour revenir au problème initial qui est d'envoyer

                • un path qui est une chaîne
                • et "\n"

                dans un fichier, il suffit de faire

                fprintf(output_file, "%s\n", current_path);
                



                -
                Edité par michelbillaud 11 mars 2024 à 7:57:58

                • Partager sur Facebook
                • Partager sur Twitter

                C - passage à la ligne dans un fwrite

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                • Editeur
                • Markdown