Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment actualiser une ligne?

    24 décembre 2005 à 11:42:17

    bonjour,
    je pense avoir tout dit dans le titre parce que j'ai un probleme:

    ce code ne marche pas:

    long pourcent=0;
     
      do
      {
      printf(" %d ",pourcent);
      printf("\r")
      sleep("100");
      pourcent += 1;
      }
      while (pourcent==100);


    le \r sert a soi-disant a acualiser mais ca marche pas !!! Et meme sans le \r ca marche pas!
    • Partager sur Facebook
    • Partager sur Twitter
      24 décembre 2005 à 12:12:42

      En cherchant sur le net j'ai trouvé :

      Citation : web

      '\r' Retour à la ligne (sans saut de ligne)

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        24 décembre 2005 à 12:24:07

        Tu pourrais préciser un peu le "ça marche pas" ? Il me semble que \r sert à revenir au début de ta ligne (donc écrire par dessus) mais je crois que ça marche pas toujours.

        Ah bah j'ai trouvé : ta condition n'est jamais vrai puisque tu as while (pourcent == 1000) mais il est initialisé à 0 donc le while ne se produit jamais. Alors mets juste while (pourcent <= 100) pour qu'il se produise 100 fois. Au passage un for est plus approprié ici : for(pourcent = 0; pourcent < 100; pourcent++)

        ;)
        • Partager sur Facebook
        • Partager sur Twitter
          24 décembre 2005 à 15:29:16

          Voici ce que j'ai essayé.

          long pourcent=0;
           
            do
            {
            printf("%ld",pourcent);
            printf("\n");
            pourcent++;
            }
            while (pourcent<=100);


          Sans le sleep mon code marche et les pourcents viennent tous les uns après les autres sur différentes lignes. (J'ai changé le \r par un \n)

          Si j'ajoute le sleep le 0 s'affiche puis plus rien.
          • Partager sur Facebook
          • Partager sur Twitter
            24 décembre 2005 à 15:34:08

            euh...sa sert a quoi et comment on utilise le sleep :euh: .
            • Partager sur Facebook
            • Partager sur Twitter
              24 décembre 2005 à 15:42:42

              Le Sleep sert à faire dormir, donc mettre le programme en pause, pour un nombre de millisecondes donné qui est en fait le nombre entre parenthèses.


              J'ai mis le "s" de sleep en majuscule et enlevé les guillemets dans la parenthèse car c'est comme ça que j'avais réussi à le faire fonctionner dans un autre de mes programmes et maintenant ça me donne l'erreur

              Citation

              undefined reference to 'Sleep'



              Le code que j'ai est le suivant:

              long pourcent=0;
               
                do
                {
                printf("%ld",pourcent);
                printf("\n");
                Sleep(100);
                pourcent++;
                }
                while (pourcent<=100);
              • Partager sur Facebook
              • Partager sur Twitter
                24 décembre 2005 à 16:11:48

                J'ai trouvé le problème. C'est au niveau du Sleep comme je croyais. La fonction sleep requiert une librairie spéciale: windows.h

                Tu devrais donc ajouter
                #include <windows.h>

                au tout début de ton code et ça devrait marcher.

                EDIT: Voici le code final et complet qui devrait fonctionner:
                #include <stdio.h>
                #include <stdlib.h>
                #include <windows.h>
                int main(int argc, char *argv[])
                {

                long pourcent=0;
                 
                  do
                  {
                  printf("%ld",pourcent);
                  printf("\r");
                  Sleep(100);
                  pourcent++;
                  }
                  while (pourcent<=100);



                 
                  system("PAUSE");     
                  return 0;
                };
                • Partager sur Facebook
                • Partager sur Twitter
                  24 décembre 2005 à 16:42:16


                  };

                  générallement on ne met pas de point-virgule apres l'incollade non?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 décembre 2005 à 16:46:41

                    Généralement non, dans ce cas non, mais pas tout le temps...

                    <Mackila>Pas le sujet : envoie lui un MP si le sujet est si important pour toi.</Mackila>
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 décembre 2005 à 16:50:52

                      int attente = 0 ;
                      do
                      {
                        printf("\r%3d%%", attente) ;
                        Sleep(100) ;
                        ++attente ;
                      } while( attente <= 100 ) ;


                      Ca fait ce que tu voulais, ca, non ?

                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 décembre 2005 à 17:05:22

                        J'ai écris un sleep dans un code sans majuscule et sans inclure windows.h et ça marche très bien.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 décembre 2005 à 20:13:27

                          Pour le }; je sais pas pourquoi c'est là. Si par contre tu parlais du ); après the do...while eh bien on en met un après les do...while habituellement je crois.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 décembre 2005 à 20:41:33

                            Mack', tu peux juste expliquer le "\r%3d%%"

                            :D Ca serait très gentil

                            Ps : ou donne simplement une référence.

                            Edit :

                            \r == efface la ligne courante
                            %3d == affiche 3chiffre
                            %% == affiche %
                            • Partager sur Facebook
                            • Partager sur Twitter

                            Comment actualiser une ligne?

                            × 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