IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

problème our passer des string dans tableau d'int


Sujet :

C++

  1. #1
    Battosaiii
    Invité(e)
    Par défaut problème our passer des string dans tableau d'int
    Le problème dans ce code c'est que lorsque j'éxécute ce code. lTab ne renvoie pas les bons chiffres de l'addresse mAC 255:255:246:254:175:255 , en toutcas pas pour lTab[0].
    les autres kTab sont corrects .
    il renvoie 3487026 au lieu de 255.
    Si quelqu'un voit ce qui fait foirer les chiffres ce serait cool


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    	//Passage de la String 'xx:xx:xx:xx:xx:xx' �un tableau de int
    	//L'adresse MAC est mise sous forme de nombres entiers
    	while ( *(pHardAddress+i) != '\0' )
        {
            while( *(pHardAddress+i) != '\0' && *(pHardAddress+i) != ':' )
            {
                lBuffer[i-lDecalage] = *(pHardAddress+i);
                i++;
            }
            lBuffer[i-lDecalage] = '\0';
            if ( *(pHardAddress+i) == ':' ) i++;
    	int a;
         cout<<" lBuffer = "<<lBuffer <<"||"<<endl; 
    	a=atoi(lBuffer);
    	cout<<" a = "<<a <<""<<endl; 	
    	cout<<" j = "<<j <<""<<endl; 	
    	lTab[j]=a;//atoi(lBuffer);
    	cout<<" lTab = "<< lTab[0]<<"||"<<endl; 
            lDecalage = i;
            j++;
        }
     
        if (j!=6) return MAC_ADDRESS_BADLY_FORMATTED;
     
     
        for(j=0;j<5;j++)
          {
    	cout<<" lTab = "<< lTab[j]<<"||"<<endl; 
          }

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Les variables i, j et lDecalage sont-elles bien initialisées ?

    Sinon, dans un style plus C++, on peut rendre le bidule un chouïa plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const std::string Adresse = "255:255:246:254:175:255";
    std::istringstream iss(Adresse);
     
    int lTab[6];
    for (int i = 0; (i < 6) && (iss >> lTab[i]); ++i)
        iss.ignore(1);

  3. #3
    Battosaiii
    Invité(e)
    Par défaut
    Ouais j'ai oublié de tout mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    int Encoder::encode(char* pHardAddress, char* pUniqueId, char* pCryptedData) {
    //Phardress est récupéré correctement de ce coté là je suis sûr qu'il n'y a pas de problème
    //j'ai déja fait des printf sur pHardAdress
     
        //Recuperation de l'adresse mac dans lTab[6]
        int i = 0;
        int j = 0;
        int k = 0;
        int lDecalage = 0;
          int lTab[6];

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    J'ai essayé ton code chez moi (VC.NET), il fonctionne très bien, même pour lTab[0].

  5. #5
    Battosaiii
    Invité(e)
    Par défaut
    Qu'indique chez toi le résultat de
    cout<<" lTab = "<< lTab[0]<<"||"<<endl;

    chez moi lTab[0] varie de 255 puis 32432553 324423545
    en gros il fait nimp au bout d'un moment. Chez moi j'ai linux ça peut expliquer ceci ?
    Sachant que j'ai récupérer le code d'une version windows que j'ai traduis en linux.

  6. #6
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca m'affiche bien toujours la première valeur. Et je ne pense pas que ça vienne de Linux.

    [chiant]

    Avec ce genre de code en C il ne faut pas s'étonner d'avoir des résultats farfelus.
    Utilise les facilités du C++ et notamment les std::istringstream, ton code fera 4 lignes au lieu de 20 et tes résultats auront beaucoup plus de chances d'être corrects.


    [/chiant]

  7. #7
    Battosaiii
    Invité(e)
    Par défaut
    n voulant éxécuter ton petit programme équivalent ? j'ai un problème de compilation
    De plus je ne sais pas quel bibliothèque utiliser . j'ai essayé <iostream>


    const std::string Adresse = "255:255:246:254:175:255";
    std::istringstream iss(Adresse);

    //int lTab[6];
    for ( i 0; (i < 6) && (iss >> lTab[i]); ++i)
    iss.ignore(1);

    for(j=0;j<5;j++)
    {
    cout<<" lTab = "<< lTab[j]<<"||"<<endl;
    }

    g++ -o Encoder.o -c Encoder.cpp -Wall -ansi
    Encoder.cpp: Dans member function « int Encoder::encode(char*, char*, char*)
    »:
    Encoder.cpp:78: variable «std::istringstream iss» a un initialiseur mais un
    type incomplet
    Encoder.cpp:81: erreur d'analyse syntaxique avant la constante numérique
    make: *** [Encoder.o] Erreur 1

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Oups pardon


  9. #9
    Membre à l'essai
    Inscrit en
    Février 2004
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 21
    Points : 22
    Points
    22
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #include <sstream>

  10. #10
    Battosaiii
    Invité(e)
    Par défaut
    trop fort ça marche enfin ce putin de code !! ouf et merci

Discussions similaires

  1. des strings dans tableau(sans char!)
    Par senvedgi dans le forum Débuter
    Réponses: 3
    Dernier message: 29/09/2011, 17h06
  2. Insérer des string dans un tableau
    Par zooffy dans le forum ASP.NET
    Réponses: 9
    Dernier message: 24/02/2011, 11h28
  3. C++/Problème envoyer recevoir des octets dans un tableau
    Par LiaGalanodel dans le forum Langage
    Réponses: 14
    Dernier message: 11/05/2010, 09h10
  4. Modification des String dans un tableau par référence
    Par koukoula dans le forum Windows Forms
    Réponses: 13
    Dernier message: 06/06/2008, 15h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo