Une fonction qui ne marche pas..... [Résolu]

Signaler
Messages postés
459
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013
-
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
-
Bonjours a tous,
et joyeux noel pour ceux qui le fête,
j'ai besoin d'un peu d'aide pour une fonction que j'ai créer,
et qui ne marche pas....

Le but de la fonction en question est de receptionner le nombre
de caractere indiquer ( int limit ), puis sur tous les caractères
recu, la fonction renvoya juste les nombres qui son dans la chaine...

Exemple :

            #~ recevoirInt( "" , 8 );
            #~ reception de la chaine : "1234z67f"
            #~ la fonction retourne : 123467

Voici la fonction :


    unsigned long recevoirInt( char* buff, int limit )
    {
         int loop = 0;
        
             while( loop < limit )
             {
                    recv( s2, buff+loop, 1, 0 );
                    loop++;
             }




             unsigned long buffer;
            
             while( long c = *buff++ )
             {
                    if( is_digit( c ) )
                    {
                        itoa ( c , buffer , 10 );
                    }
             }




         return buffer;
    }






Merci.....

Cordialement
       


~~ DotWizard512~~

  

2 réponses

Messages postés
459
Date d'inscription
dimanche 9 janvier 2005
Statut
Membre
Dernière intervention
11 mai 2013

Je crois avoir trouver la solution,
même si sa crash, mais a mon avi sa vien pas de la nouvelle fonction,
la voici :

unsigned int recevoirInt (char *chaine, int limit)
{
 unsigned int buf = 0;
 int i = 0, j=0;
 while (i < limit)
 {
       if( is_digit( chaine[i] ) )
       {
        buf = buf * 10;
        buf = buf + chaine [i];
        i++;
       }
 }
 
 return buf;
}
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
unsigned int GetIntegerFromStr( char *sz )
{
    unsigned int Buff = 0;
    char *c = sz;
   
    while (*c)
    {
          if ((*c >= '0') && (*c <= '9'))
          {
                Buff *= 10;
                Buff += *c - '0';
           }
           c++;
     }
     return Buff;
}

 
int main ()

    char Buff[] = "12g45h8j";
    printf("Entier dans la chaine %s : %i\n", Buff, GetIntegerFromStr(Buff));                  
    system("pause");     
   return 0;
}
               

ULARGE_INTEGERJokyQi=QI("Joky"