begin process at 2012 05 28 22:05:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

lundi 13 novembre 2006 à 09:36:30 | Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

wizard512

Membre Club

Bonjours,
Je souhaiterais savoir, svp,
qui pourait m'aider pour résoudre un problème,
lier a une comparaison et une boucle while,

Voici l'erreur obtenue :
      ISO C++ forbids comparison between pointer and integer

Et Voici le code ( les lignes rouge sont celle décrite par les erreurs ) :

 char* response = "";

 while( response != true && response != 2 )
 {
   printf( "\r\nSaisie, incorrect, veuillez recommencer !\r\nChoix : " );
   scanf( "%s" , response );
 }
         
 if( response == 2 )
 {
      //....
 }

   Cordialement
                ~~ DotWizard512 ~~

       

lundi 13 novembre 2006 à 09:46:15 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

buno

Administrateur CodeS-SourceS
Salut,
1èrement, un pointeur ne peut pas être "true". Il peut être à la rigueur différent de NULL.
2èmement, un pointeur ne peut prendre la valeur 2. Je ne sais pas ce que tu veux tester mais là, c'est normal que ton compilo te jette...

Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Le site de mon mariage
lundi 13 novembre 2006 à 09:49:51 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

BruNews

Administrateur CodeS-SourceS
Pointeur ne pointe sur aucun buffer dans lequel tu puisses entrer (scanf ou autre) quoi que ce soit.
char buf[100];
char *response = buf;

"response != true && response != 2"
n'a evidemment aucun sens.

ciao...
BruNews, MVP VC++
lundi 13 novembre 2006 à 09:52:47 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

wizard512

Membre Club

Ok,
Merci pour les info,
Je m'explique, le programme affiche un choix a faire ( un ou deux )
Ma boucle while, sert a "dire",
que t'en que "response" n'est ni 1 ni 2, alors on recommence.....

Sachant que plus haut, j'ai fait :
#define true 1

  Cordialement
                ~~ DotWizard512 ~~


    

lundi 13 novembre 2006 à 10:03:52 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

turnerom

En gardant ton idée de base, ça ça doit marcher (si tu as bien mit ton #define true 1, mais c'est quand meme assez moche)

// Le nombre max de characteres dans la reponses + 1
#define 50 MAXCHAR
 char* response = (char*) malloc(sizeof(char)*MAXCHAR);
 

 printf( "\r\nSaisie, incorrect, veuillez recommencer !\r\nChoix : " );
 scanf( "%s" , response );

 while( atoi(response) != true && atoi(response) != 2 )
 {
   printf( "\r\nSaisie, incorrect, veuillez recommencer !\r\nChoix : " );
   scanf( "%s" , response );
 }

         
 if( atoi(response) == 2 )
 {
      //....
 }
//...
free(response);

TuRn3r
lundi 13 novembre 2006 à 10:24:50 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

wizard512

Membre Club

La fonction atoi() je dois la codé moi même.....?

Voici le code en entier :

#############################################################

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#pragma comment( lib, "ws2_32.lib" )

#define true 1
#define false 0

void OpenPort( void )
{
    int Port = 0;     // Port de départ
    int count = 0;    // Nb port d'ouvert
    int returned = 0; // Retour a la ligne     ^^'
   
    WSADATA WSA;
    WSAStartup( MAKEWORD( 2 , 0 ) , &WSA );

    SOCKET Ksock;
    SOCKADDR_IN Ksin;
   
       Ksock = socket(AF_INET, SOCK_STREAM, 0);
      
             Ksin.sin_addr.s_addr = inet_addr( "127.0.0.1" );
             Ksin.sin_family = AF_INET;
             Ksin.sin_port = htons( Port );
    
         printf( "Listes des ports ouverts : \r\n" );
         printf( "\r\n-------------------------------------------------\r\n" );

              while( Port < 65536 )
              {
                if(
                   (
                     connect( Ksock , ( struct sockaddr* ) &Ksin , sizeof( struct sockaddr ) )
                   ) == 0   // Port ouvert
                  )
                  {
                     count++;
                    
                     if( returned == 10 )
                     {
                         returned = 0;
                         printf( "\r\n" );
                     }
                      else
                     {
                         returned++;    
                     }
                    
                     printf( "%d, " , Port );
                     Port++;
                  }
               }
   
    WSACleanup();         //on libére les ressources allouées
    closesocket( Ksock ); //on ferme le socket
   
         printf( "\r\n-------------------------------------------------\r\n\r\n" );
         printf( "Nombre de ports ouverts : %f\r\n\r\n", count );


   
}

int main( void )
{
 #define MAXCHARS 50
 char* response = ( char* ) malloc( sizeof( char ) *MAXCHARS );
   
    while( true )
    {
        system( "cls" );
       
         printf( "Veuillez patienter, Pendant le scan des ports,\r\nScan en cours..........\r\n\r\n" );
         OpenPort();
         printf( "Choix :\r\n1. Recommencer le scan\r\n2. Quitter\r\n\r\nChoix : " );
        
         scanf( "%s" , response );
      
         while( atoi( response ) != true && atoi( response ) != 2 )
         {
                printf( "\r\nSaisie, incorrect, veuillez recommencer !\r\nChoix : " );
                scanf( "%s" , response );
         }
        
         if( atoi( response ) == 2 )
         {
             break;
         }
        
       free( response );
    }
   
    return 0;   
}


#############################################################



  Cordialement
                ~~
DotWizard512
~~

    
lundi 13 novembre 2006 à 11:33:22 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

turnerom

Non, elle existe la fonction atoi.

TuRn3r
lundi 13 novembre 2006 à 11:42:23 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

wizard512

Membre Club

A ok,
merci, mais je ne comprent pas
pourquoi lors de l'execution du programme,
aucun port n'est afficher,
alors qu'il y a bien des ports ouvert    ^^'
et puis apparament il scannerais toujours le même port,
car j'ai rajouter un printf( Port );
au cas ou le port est fermer,
et il m'affiche toujours, 0
donc il reste toujours sur le port 0

  Cordialement
                ~~
DotWizard512
~~

    

lundi 13 novembre 2006 à 13:42:26 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

turnerom

Plusieurs tres grosses erreurs dans ce code.
-Deja, ne t'etonne pas qu'il reste sur le port 0, car tu as beau faire un Port++, si tu fais pas un Ksin.sin_port = htons( Port );
dans ton while ca sert à rien.
-De plus il faut faire un closesocket sur chaque port et pas que sur le dernier ( met le dans le while)
-Je ne comprend pas a quoi sert returned (d'ailleurs, il sert a rien dans ton code), je peux me tromper, mais si tu rentre dans ton
  if( returned == 10 )
                     {
                         returned = 0;
                         printf( "\r\n" );
                     }

fais moi signe.
-Enfin (et j'en oubli surement) si tu fais pas de segmentation fault c'est un vrai miracle avec le      free( response ); dans la boucle while
-Ah oui j'en ai oublié (au moins :D) encore un, pour tester une connection de socket, il faut pas faire ==0 pour savoir si c ok, mais plutot un == -1 pour savoir que ca a foiré

TuRn3r
mardi 14 novembre 2006 à 18:15:30 | Re : Comparaison et boucle while ; ISO C++ forbids comparison between pointer and integer

wizard512

Membre Club

D'accord je vois, il faut reprécifier le port a chaque connection
ce qui me semble normale.....       ^^'
Mais par contre Je ne suis pas tros d'accord
avec ce que tu a marquer concernant la condition de returned...
Parceque on ajoute 1 a chaque tour, donc au bout d'un moment,
on rentre forcément ds la condition....
Parcontre désolé mais j'ai rien compris concernant le
free( response );     ^^'
Pourait tu détailler s'il te plait....

Donc d'après toi le code devrait ressemblé a sa...?

###########################################################

#include <stdio.h>
#include <winsock2.h>
#include <windows.h>
#include <time.h>

#pragma comment( lib, "ws2_32.lib" )

#define true 1
#define false 0

/* fonction sleep de Arnotic */

void sleep(int nbr_seconds)
{
    clock_t goal;
 
    goal = (nbr_seconds * CLOCKS_PER_SEC) + clock();
 
    while(goal > clock())
    {
        ;
    }
}

void OpenPort( void )
{
    int Port = 0;     // Port de départ
    int count = 0;    // Nb port d'ouvert
    int returned = 0; // Retour a la ligne     ^^'
   
    WSADATA WSA;
    WSAStartup( MAKEWORD( 2 , 0 ) , &WSA );

    SOCKET Ksock;
    SOCKADDR_IN Ksin;
   
         printf( "Listes des ports ouverts : \r\n" );
         printf( "\r\n-------------------------------------------------\r\n" );

              while( Port < 65536 )
              {
                if(
                   (
                     connect( Ksock , ( struct sockaddr* ) &Ksin , sizeof( struct sockaddr ) )
                   ) == -1   // Port ouvert
                  )
                  {

                     Ksin.sin_port = htons( Port );
                     count++;

                     if( returned == 10 )
                     {
                         returned = 0;
                         printf( "\r\n" );
                     }
                      else
                     {
                         returned++;    
                     }
                    
                     printf( "%d, " , Port );
                     Port++;
                     closesocket( Ksock ); //on ferme le socket
                  }
               }

         WSACleanup();         //on libére les ressources allouées 
    
         printf( "\r\n-------------------------------------------------\r\n\r\n" );
         printf( "Nombre de ports ouverts : %d\r\n\r\n", count );


   
}

int main( void )
{
 #define MAXCHARS 50
 char* response = ( char* ) malloc( sizeof( char ) *MAXCHARS );
   
    while( true )
    {
        system( "cls" );
       
         printf( "Veuillez patienter, Pendant le scan des ports,\r\nScan en cours..........\r\n\r\n" );
         OpenPort();
         printf( "Choix :\r\n1. Recommencer le scan\r\n2. Quitter\r\n\r\nChoix : " );
        
         scanf( "%s" , response );
      
         while( atoi( response ) != true && atoi( response ) != 2 )
         {
                printf( "\r\nSaisie, incorrect, veuillez recommencer !\r\nChoix : " );
                scanf( "%s" , response );
         }
        
         if( atoi( response ) == 2 )
         {
             break;
         }
        
       free( response );
    }

    printf( "\r\nEnrevoir.......         ^^" );
    sleep( 2 );
   
    return 0;   
}



###########################################################


  Cordialement
                ~~ DotWizard512
~~

    

  PS: Juste une petite remarque, aparament quand j'ai changer
      le Zero de la condition par ton
-1 , ben selon lui,
      tous les ports de ma machine son ouvert, lol....
      ....BizZare n'esse pas...?
     :p



Cette discussion est classée dans : boucle, while, comparaison, response, iso


Répondre à ce message

Sujets en rapport avec ce message

Problème avec une boucle while [ par arconius ] voilà j'ai fait un prog où l'on tire des dés mais j'ai un problème avec ma boucle while car au lieu de me donner un chiffre aléatoire à chaque fois il boucle de message interrompue [ par juliol ] bonjour, je fais un prog qui utilise un hookpour qu'il tourne en permanence, apres l'avoir cree, je lance une boucle infinie et je met ma boucle de me sortir d'une boucle while infinie avec un bouton [ par bertrandbasch ] Bonjour,En fait je voudrai pouvoir lancer une boucle while à l'aide d'un bouton 1 qui pourrait être stoppé à l'aide d'un bouton stop.Il me faut cette RAND : éviter de sortir un nombre déjà sorti... prob ! [ par did2604 ] Bonsoir,J'ai un problème assez spécial à vous exposer. Je me casse la tête dessus depuis 2h et pas moyen de trouver le bug. Voilà, j'utilise donc la f boucle do while et timer [ par gogeta2003 ] Salut, je doit récupérer une valeur que je lis sur une carte E/S, et j'attend dans une boucle infini pour passer au cycle suivant tant que je n'ai pas arret boucle while par clic bouton [ par julienbornet ] Bonjour, je suis entrain de programer une API. Cette api est programmer dans une dialogu box. et je chehce a arreter une boucle while lorsque l'utilis Probleme pour kbhit [ par ChAnGy59 ] Bonjour a tous,Voila mon petit sousis, j'aimerai pouvoir sortir d'une boucle while en "frappant" la touche Q, a l'aide de kbhit. Je voulais savoir si linux [ par rawen ] svp vou pouvez m'aider de faire un mini compilateur en langage lex/yacc pour qu'il puisse faire compiler 3 boucles en langage C -la boucle for -la bou pti pb de thread [ par sena ] Bonjour,j'ai un prog dans lequel je créé un thread.Ce thread tourne en boucle. Dedans j'ai une boucle While(true)Je voudrais savoir comment je pourrai Boucle While, qui ne boucle pas ? ^o) [ par oshin ] J'ai un petit soucis et je comprends vraiment pas d'ou ça peut venir.J'ai un boucle while qui ne boucle pas... et du coup ne recommence pas:#include i


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,515 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales