Conversion d'un DWORD en char

warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009
- 30 nov. 2008 à 12:35
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009
- 1 déc. 2008 à 16:32
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

racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 13:09
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.
0
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

30 nov. 2008 à 13:16
Merci mais peut tu m'indiquer que signifie le dernier paramètre (10) ?
0
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

30 nov. 2008 à 13:22
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
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 13:46
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>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

30 nov. 2008 à 13:48
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 :/
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 14:08
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);
0
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

30 nov. 2008 à 14:44
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
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
30 nov. 2008 à 15:15
Peu importe le compilo, ici ce sont les bases du C qui manquent, rien ne remplacera un bon bouquin.

ciao...
BruNews, MVP VC++
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 15:18
Je vais faire un petit test sur Dev C++.
Si tu veux juste afficher la valeur dans la console tu peux utiliser directement  printf().
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 15:58
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);
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 16:06
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.
0
BruNews
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
19
30 nov. 2008 à 16:13
strcpy(buffer, DWORD)
indique clairement que les bases sont manquantes, je ne crois pas que ce soit affaire de compilo.

ciao...
BruNews, MVP VC++
0
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
14
30 nov. 2008 à 17:51
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.
0
warmup1992
Messages postés
23
Date d'inscription
jeudi 12 avril 2007
Statut
Membre
Dernière intervention
1 octobre 2009

1 déc. 2008 à 16:32
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é :)
0