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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
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
Rejoignez-nous