Une fonction qui ne marche pas.....

Résolu
wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 - 24 déc. 2006 à 11:58
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 - 24 déc. 2006 à 14:21
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

wizard512 Messages postés 459 Date d'inscription dimanche 9 janvier 2005 Statut Membre Dernière intervention 11 mai 2013 2
24 déc. 2006 à 13:58
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;
}
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
24 déc. 2006 à 14:21
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"
3
Rejoignez-nous