Probléme avec un code en c

Bonjour, j ai un probléme avec un petit code tous simple en c :

long compteur;

for (compteur = 0 ; compteur < 10 ; compteur++)
{
printf("net send 153.10.85.\n");
}

normalment ca devrait m afiché 10 fois le msg net send ........ mais le compilateur bloc dès la fonction long
ps: compilateur code block projet sous console
et il me fait pareil pour mes autres codes -_- je peut avoir de l'aide svp
et si possible vous pouvez me dire comment faire une boucle infinie?
Configuration: Windows XP
Firefox 2.0.0.3

13 réponses

  • Votes
  • Date
  • Date décroissante
  1. Pareil, aucun problème avec Dev-C++, d'ailleurs je te le conseille perso :)

    D'autre part, j'aime pas trop for, je préfère les boucles if ou while / do...while.

    Par exemple tu peux faire ça comme ça :
        int compteur = 0;
    
        do{
                 printf("net send 153.10.85.\n");
                 compteur++;
        }while(compteur < 10);


    PS : je te conseille de définir ton compteur en int, puisqu'il s'agit d'un compteur, il ne peut donc s'agit comme valeurs que d'entiers (1, 2, 3...)... logiquement, tu ne peux pas avoir 2.5, puis 3.9, etc...

    D'ailleurs je ne me sers pas de Code:Blocks mais il est possible que ce soit dû à ça : le fait que tu veuilles l'incrémenter alors qu'il s'agit d'un long...

    Tiens moi au courant pour mon code, s'il marche pour toi et si ça marche en mettant un
    int compteur;

    A plus et bonne chance !
    1. oui oui je sais pour les {} et pause ne sert pas pour code block pour dev c++ j utilise
      heu par contre quél diréctives préprocésseur il faut pour un programe comme ca?
      1. printf("net send 153.10.85.\n");

        J'ai fait du C , masi je ne vois pas ce que c'est ..
        Pourquoi ne pas utiliser %ld ?

        Ca fait lontemsp que j'en ai pas fait , mais je pense qu'il faut definir long , non ?
        long = 0 ;
        1. printf("net send 153.10.85.\n");
          c'est le méssage a écrire
          et si je ne me trompe pas le %ld c'est pour une réponse mon but est de répété le msg "net send 153.10.82." a cahque fois que l utilisateur fait entré
          pour la valeur du long elle y est la: for (compteur = 0.....
          ps: je me trompe peu étre pour le %ld je suis novice en c
          1. Bah , regarde les doubles points partout ...
            Essaye avec long = 0 ....
            sinon le %ld sert a renvoyer une valeur ... J'avaus pas compris ce que tu attendais du programme , mais oui , tu as raison ^^
            Pour faire une boucle infini , regarde sur le site du zero , le tutoriel C est super ! ( avec corrige :) )
            1. Bonsoir,

              Je viens de tester cettte boucle, ça m'affiche :

              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.
              net send 153.10.85.


              int main () { 
              long compteur; 
              
              for (compteur = 0 ; compteur < 10 ; compteur++) 
              { 
              printf("net send 153.10.85.\n"); 
              } 
              
              return 0; 
              
              }


              P.S. C'est quoi le problème exactement ?
              1. Contributeur
                Salut
                Pour faire boucle infinie :
                while(1){
                   puts("toto");
                }
                

                Cdlt
                1. Ah et puis voilà une boucle infinie très facile à comprendre :
                      int compteur = 0;
                  
                      do{
                               printf("net send 153.10.85.\n");
                      }while(compteur < 1);


                  On déclare le compteur à 0 et tant que le compteur est inférieur à 1, on affiche le message.
                  Or comme le compteur vaut 0 et qu'il n'est jamais incrémenté ou modifié, il sera toujours inférieur à 1 et donc le message se répète indéfiniment :)
                  1. Contributeur
                    C'est dommage d'utiliser une variable pour donner une condition toujours vraie.
                2. C'est plus explicite pour les débutants qui ne comprennent pas forcément les booléens...
                  1. Contributeur
                    compteur > 1 c'est un boolen ;)
                    Et si tu mets while ( 0>1) ça revient exactement au même avec en plus l'économie d'une variable.
                3. int compteur = 0;

                  do{
                  printf("net send 153.10.85.\n");
                  }while(compteur < 1);
                  ce code ne marche pas mais je pence que le probléme vien de mes compilateur sur tout mes code il bloc int char ou long sur code block et dev c++
                  1. En même temps faut quand même glisser ça dans un main(), et ajouter 1 ou 2 directives de préprocesseurs et un system("PAUSE"); hein...
                    1. Hum...

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

                      Je pense que ça suffira :)
                      1. Contributeur
                        Juste #include <stdio.h>
                        Pas besoin de stdlib.