Conversion d'un DWORD en char

Signaler
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009
-
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009
-
Bonjour à tous,
je fais appel à vous car je me suis lancé dans un projet assez simple qui consiste a faire un anti leak.
Donc bon rien de bien méchant sauf que j'ai un problème lors de la conversion d'un DWORD en char...

void getInfo ()
{
     SYSTEM_INFO siSysInfo;
     GetSystemInfo(&siSysInfo);
     char oemID[255];


     strcpy(oemID,siSysInfo.dwOemId);
     printf("OemID : %s",oemID);
 }
 

voila, le prototype du 2e params de strcpy est un const char donc c'est normal que ca ne marche pas ..
Ensuite j'ai essayé un cast. Pas d'erreur mais sa plante ...

Ensuite j'ai essayé : char oemID = (char*)siSysInfo.dwOemId;

etc ...

Sans succès :)

Merci d'avance pour l'aide

14 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,

Au lieu de strcpy() utilise ultoa():
ultoa(siSysInfo.dwOemId,oemID,10);

Selon MSDN, le membre dwOemId de la structure SYSTEM_INFO ne doit plus être utilisé car obsolète.
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

Merci mais peut tu m'indiquer que signifie le dernier paramètre (10) ?
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

Ha oui et si tu savais également m'indiquer de qu'elle include il s'agit :p parce que il ne la reconnai pas ..


 


MERCI
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Le dernier paramètre est la base de la conversion:
2=binaire
10=décimale
16= hexadécimale
etc
Dans le cas de 10  la chaine résultante sera donc en décimal.

faire #include <stdlib.h>
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

Bhon désolé pour les multiple post mais la fonction editer n'est pas présente ^^
J'ai fais une petite recherche google j'ai répondu a toutes mes questions mais sa ne marchera toujours pas ... Car le premier parametre est un long et moi j'ai un DWORD ....

Conversion impossible ...
Me faudrait un autre truc .. sa doit bien etre possible :/
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Tu utilises quel compilateur? Cela pourrait en dépendre.
Le type DWORD est en fait un unsigned long, donc aucune raison pour que ultoa() ne l'accepte pas. Essaie avec un cast:
ultoa((unsigned long)siSysInfo.dwOemId,oemID,10);
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

je ne suis pas sur mon bon pc donc du coup j'utilise Dev C++ mais sur mon bon pc j'ai visual C++ 6.0
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
Peu importe le compilo, ici ce sont les bases du C qui manquent, rien ne remplacera un bon bouquin.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je vais faire un petit test sur Dev C++.
Si tu veux juste afficher la valeur dans la console tu peux utiliser directement  printf().
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Je viens de voir que Dev C++ ne reconnait pas ultoa(). Par contre, _ultoa() est bien reconnue.
Tu peux donc faire:
_ultoa(siSysInfo.dwOemId,oemID,10);
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
BruNews >> On est habitués à Visual C/C++ avec lequel on ne rencontre pas de problèmes car il est complet. Beaucoup de débutants rencontrent souvents des problèmes avec d'autres compilateurs, comme Dev C++ qui est d'ailleurs abandonné par ses créateurs.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
26
strcpy(buffer, DWORD)
indique clairement que les bases sont manquantes, je ne crois pas que ce soit affaire de compilo.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Oui, ça se voit qu'il est débutant. On essaie juste de l'aider à surmonter son blocage. Le compilo utilisé vient compliquer les choses pour lui.
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

Hum humm .. les bases sont tout a fait acquise .... j'ai préciser des le debut que mon code était incorrect ...
et que je cherchais juste comment faire pour convertire ... Je n'ai pas l'habitude de programmer avec l'api c'est tout ....

Merci à ceux qui m'on aidé :)