Résultats de 1 à 10 sur 10

Sujet : printf marche pas entre fopen et fclose

  1. #1
    Membre MP
    Inscrit
    août 2013
    Messages
    11

    printf marche pas entre fopen et fclose

    hello

    une bonne partie de mon problème est expliqué dans le titre.

    En fait je traite un fichier assez long . Pour me rassurer j\'aimerais voir un compteur ou un pourcentage s\'afficher pendant le traitement. (des fois je me demande si il a planté ou pas et j\'attend comme un c..)
    alors je me suis dis betement, il suffit de mettre un printf avec un pourcentage effectué et ben non, le printf ne s\'affiche que lorsque la boucle est finie..... bizarre

    un peu de code :


    Code:
    compteur=0;
     
    source = fopen(\"ValeriaRossi-Tutt.mp3\", \"r\");
    
    while(compteur<=valeur_de_fin)
    {
    
    //..................opération
    
    
    printf(\"%d \",compteur); //bizarre mais ce printf n\'agit qu\'après la fin de la boucle
    
    compteur++;
    
    }
    
    fclose(source);

    Merci d\'avance si vous avez une idée pour afficher quelque chose dans cette boucle while

  2. #2
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    faut toujours mettre un \\n a la fin de printf. sinan il marche mal. c est un vieux bug. Mais ca a peut etre rien a voir.
    Pourquoi tu fait un fopen et pas un open tout court?
    tu lit les information du fichier ou son contenu?
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  3. #3
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    merci,
    voila un bug que je ne connaissais pas, ca a l\'air de focntionner comme ca

    Maintenat, point de vue \"design\", j\'aurais aimé quelque chose dans le genre : pourcentage : [-----------] avec un \"-\" qui s\'ajoute à chaque passage, c\'est pour ca que je n\'ai pas utilisé \\n
    si tu as une idée elle, est bienvenue.
    Sinon, un effacement d\'écran( je ne sais plus trop comment on fait \"\\quelque chose\" il me semble) et alors j\'afficherais : Pourcentage effecué : 50% et je réefface l\'écran à chaque affichage pour faire zolizoli

    j\'utilise avec fopen et fclose, car j\'avais jamais entendu parler de open

    je lis le contenu du fichier et j\'effectue toute une série de calcul sur ce contenu pour les écrire dans un autre fichier :-)

    merci

  4. #4
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    ok open devrai sufir alors mais .pour le printf essaye de faire un \\r pour revenir en arrier et de recrire dessus.

    moi je ferai un char tab[nb_de_pti_trai + 1];
    et apres tu le rempli au fur et a mesure ke ca tourne et a chak fois tu affiches
    printf (\"[ %s ]\\r\", tab);
    a noter ke tu dois initialiser ton tableau avec des espaces dedans
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  5. #5
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    je viens d\'essayer.

    si je fais

    printf (\"[ %s ]\\r\", tab);
    il me dis segmentation fault

    alors j\'essaye
    printf (\"[ %c ]\\r\", tab);
    alors j\'ai droit à la fin du programme à 1 affichage [ - ]

    alors je met \\n
    printf (\"[ %c ]\\r\\n\", tab);
    j\'ai droit à un affichage à chaque boucle mais :
    [ - ]
    [ - ]
    [ - ]
    [ - ]
    et cela jusqu a la fin

    a quoi sert le \\r? merci

  6. #6
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    Normalement c est un retour chariot. grrrr. lol. attend vais essayer de le faire hi hi
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  7. #7
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    comme ca ca marche mais c est pas beau :
    et si je vire le /n ca marche plus
    Code:
    {
      int   i;
      char  tab[] = \"         \";
      for(i = 0; i <10; i++)
        {
          printf(\"[%s]\\r\\n\", tab);
          tab[i] = \'-\';
        }
    }
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  8. #8
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    bon oublie le printf :
    Code:
    void    my_putstr(char *str)
    {
      write(1, str, strlen(str));
    }
    
    int     main()
    {
      int   i;
      char  tab[] = \"         \";
      for(i = 0; i <10; i++)
        {
          my_putstr(\"\\r[\");
          my_putstr(tab);
          my_putstr(\"]\");
          tab[i] = \'-\';
          sleep(0,5);
        }
    }
    le sleep c est pour voir ski space mais on voit mieu a 1 qu a 0.5
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

  9. #9
    Membre MP
    Inscrit
    août 2013
    Messages
    11
    c\'est magnifique, merci
    voila le premier volet de mon programme terminé,

    reste le plus dur à faire :-)

    @+

    Jean

  10. #10
    Membre MP
    Inscrit
    août 2013
    Messages
    627
    Bon courage
    ... Until then, we're better off dead
    A smile on the lips and a hole in the head ...

Informations du sujet

Utilisateur(s) parcourant ce sujet

il y a actuellement 1 utilisateur(s) parcourant ce sujet. (0 membre(s) et 1 visiteur(s))

Règles des messages

  • Vous ne pouvez pas créer de sujets
  • Vous ne pouvez pas répondre aux sujets
  • Vous ne pouvez pas importer de fichiers joints
  • Vous ne pouvez pas éditer vos messages
  •  
  • Les BB codes sont Activés
  • Les Smileys sont Activés
  • Le BB code [IMG] est Activé
  • Le code [VIDEO] est Activé
  • Le code HTML est Désactivé
Please disable Adblock!