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 :

Aide | error: invalid conversion from 'unsigned char' to 'const char*'


Sujet :

C++

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par d�faut Aide | error: invalid conversion from 'unsigned char' to 'const char*'
    Cela fait maintenant quelques heures que je suis confront� � un petit soucis, et j'avoue qu'ayant repris le dev il y a peu, je n'arrive pas � le r�soudre alors que je suis sur que c'est tout simple x)

    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
    void AESModule::CryptFile()
    {
        std::ifstream inFile("Test.txt", std::ios::binary);
     
        unsigned char* mytexte;
     
        for ( int i = 0; i < 16; i++ )
        {
            unsigned char c;
     
            inFile >> c;
     
            strcpy( mytexte, c );
        }
     
        inFile.close();
    };
    Me donne :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    -------------- Build: Debug in MyAESAlgo ---------------
     
    g++.exe -Wall -fexceptions  -g     -c C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp -o obj\Debug\aes_module.o
    C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp: In member function 'void AESModule::CryptFile()':
    C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp:413: error: invalid conversion from 'unsigned char*' to 'char*'
    C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp:413: error:   initializing argument 1 of 'char* strcpy(char*, const char*)'
    C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp:413: error: invalid conversion from 'unsigned char' to 'const char*'
    C:\Users\Alastor\Documents\CodeBlock\MyAESAlgo\aes_module.cpp:413: error:   initializing argument 2 of 'char* strcpy(char*, const char*)'
    Process terminated with status 1 (0 minutes, 1 seconds)
    4 errors, 0 warnings (0 minutes, 1 seconds)
    Si on pouvait soit m'indiquer la bonne d�marche et m'expliquer pourquoi �a ne fonctionne pas, soit me fournir un code qui effectue celui sans probl�me ...
    A noter qu'il est important que je r�cup�re des unsigned char ...

  2. #2
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Au moins 2 choses ne vont pas dans le code.

    Quand on utilise des fonctions str... (strcpy, strcat, strcmp, ...) on utilise des char *.

    Si on veut utiliser des unsigned char et unsigned char * (pour tout un tas de bonnes ou mauvaises raisons), on n'utilise plus les fonctions str...

    Tu ouvre ton fichier en mode binaire (std::ios::binary), donc tu as raison d'utiliser des unsigned char.

    Maintenant, ce qui ne va pas :
    C'est le buffer qui va stocker 16 octets binaires de ton fichier. Si c'est un buffer de unsigned char, cette variable n'a aucune raison de s'appeler mytexte, cela embrouille le lecteur.

    De plus, tu d�clares un pointeur sur le buffer mais il n'y a pas d'espace m�moire allou�. Comme tu connais la taille maxi de ce buffer (16 octets), pourquoi ne pas le d�clarer comme cela :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    unsigned char * buffer[16];
    ensuite, on n'utilise pas les fonction str... sur les unsigned char donc ton strcpy() devient :
    buffer[i] = c;

    PS : au fait, le ";" apr�s la derni�re accolade de la fonction n'est pas utile (mais cela ne g�n�re pas d'erreur).

    Je te propose le code suivant :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void AESModule::CryptFile()
    {
        std::ifstream inFile("Test.txt", std::ios::binary);
     
        unsigned char buffer[16];
     
        for (size_t i = 0; i < sizeof(buffer); i++ )
        {
            inFile >> buffer[i];
     }
     
        inFile.close();
    }
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  3. #3
    R�dacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par d�faut
    Et avec la STL, parce qu'elle le vaut bien
    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
    #include <fstream>
    #include <vector>
    #include <iterator>
    #include <algorithm>
     
    void AESModule::CryptFile()
    {
        std::ifstream inFile("Test.txt", std::ios::binary);
        std::vector<unsigned char> buffer;
        std::copy(
            std::istream_iterator<unsigned char>(inFile)
            ,std::istream_iterator<unsigned char>()
            ,std::back_inserter(buffer)
        );
    }

  4. #4
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par 3DArchi Voir le message
    Et avec la STL, parce qu'elle le vaut bien
    <mode reflexion qui sert � rien=on>
    Tu avoueras, c'est quand m�me pas une �criture naturelle pour quelqu'un qui n'est pas tomb� dedans quand il �tait petit.

    Ou alors, la STL est sponsoris�e par ASPRO et Epheralgan
    <mode reflexion qui sert � rien=off>
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par d�faut
    Ahhh je me l�ve, vois la r�ponse de ram, analyse, test et voit que �a marche ..
    Je descend la page ..

    Et la paf claquage du cerveau a froid xD
    Le code de 3DArchi a l'air plus lourd, est ce un handicape en terme de performance ?

  6. #6
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Citation Envoy� par Alast0rs Voir le message
    Le code de 3DArchi a l'air plus lourd, est ce un handicape en terme de performance ?
    Honn�tement, le code de 3DArchi est plus dur � lire pour celui qui ne lit pas la STL et le C++ "dans le texte" (c'est dur aussi pour moi qui ait commenc� avec le C il y a 20 ans et qui d�couvre le C++ depuis une paire d'ann�es) mais il est aussi nettement plus robuste, portable et �volutif.

    En termes de performance, je suppose que la robustesse et l'�volutivit� a un co�t et tant que tu ne dois pas ex�cuter cette fonction 120 000 fois par secondes (enfin souvent quoi), l'impact est n�gligeable.
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par d�faut
    Ok j'en prend note, donc une fois que mon application sera stable, je r��crirais ma classe de mani�re � ce quel n'utilise que la STL

  8. #8
    R�dacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en s�curit�
    Inscrit en
    Mai 2007
    Messages
    11 517
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 62
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Consultant en s�curit�
    Secteur : High Tech - Op�rateur de t�l�communications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par d�faut
    Attention, le code de 3DArchi n'est pas strictement �quivalent au mien. J'ai l'impression qu'il lit le fichier en entier alors que je ne lis (comme toi d'ailleurs) que les 16 premiers octets

    et je me garderais bien de proposer une correction "STL compliant"
    Raymond
    Vous souhaitez participer � la rubrique R�seaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs syst�me et r�seau � configurer leurs �quipements SNMP r�seau.
    e-verbe Un logiciel de conjugaison des verbes de la langue fran�aise.

    Ma page personnelle sur DVP
    .

  9. #9
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    10
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 10
    Par d�faut
    Oui il lit le fichier en entier, je n'aurais qu'a lire le vector de uchar 16 par 16

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 27/09/2011, 15h53
  2. R�ponses: 12
    Dernier message: 03/09/2009, 03h06
  3. R�ponses: 4
    Dernier message: 15/10/2008, 21h30
  4. R�ponses: 7
    Dernier message: 16/02/2008, 07h30
  5. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    R�ponses: 16
    Dernier message: 31/01/2006, 11h28

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