Bonjour, j'ai un probleme lorsque je veux passer une chaine de caractere en argument a un thread, voici mon code :
DWORD WINAPI thcmd(LPVOID lpParam)
{
printf("\nlpParam = %s\n", (char*)lpParam);
return 0;
}
void CommandParser(char * buf)
{
DWORD ThreadId;
if(GetParameter(buf,3))
{
if (!strcmp(GetParameter(buf,3), "$cmd"))
{
if(GetParameter2(buf,2))
{
printf("\ncmd = %s\n", GetParameter2(buf,2));
CreateThread(NULL,NULL,thcmd,(LPVOID)GetParameter2(buf,2),NULL,&ThreadId);
}
}
}
}
Voici les prototypes des fonctions utilisées:
char *GetParameter(char *buf,int nr);
char *GetParameter2(char *buf,int nr);
La fonction CommandParser recupere l'argument écris apres $cmd et dois le transmettre au thread.
Exemple:
Si dans buf il y a:
$cmd "ceci est une commande de test"
Le resultat de GetParameter(buf,3) est: $cmd
Le resultat de GetParameter2(buf,2) est: ceci est une commande de test
Or lorsque j execute mon code, dans mon GetParameter2(buf,2) j'ai bien: ceci est une commande de test, mais dans mon lpParam j'ai autre chose (le printf m'indique que la valeur est: md)
Par contre lorsque je passe un entier a la place d'une chaine ça marche
Comment faire pour que cela marche avec les chaines ?
Merci d'avance