Salut
Je programme actuellement sous Visual Studio 2013 et j'ai un petit problème que voici:
Imaginons le code suivant:
Si lors du fgets, j'entre "ééé" dans la console et que une fois le programme terminé, je fais CTRL + V, j'obtiens ",,,"
Je pense que le problème vient du fait que la console de Windows utilise la page de code 850 dans laquelle le 'é' vaut 130 et que Visual Studio utilise une autre page de code que je connais pas ou 'é' vaut -23
La question est comment changer la page de code qu'utilise Visual Studio pour que le 'é' vaille 130 également et qu'il n'y ait plus de problèmes au niveau du copyToClipboard ?
Je programme actuellement sous Visual Studio 2013 et j'ai un petit problème que voici:
Imaginons le code suivant:
Code:
int copyToClipboard(char* source);
int main()
{
char string[15] = { 0 };
fgets(string, 15, stdin);
copyToClipboard(string);
}
int copyToClipboard(char* source)
{
int ok = OpenClipboard(NULL);
if ( !ok )
{
return -1;
}
HGLOBAL clipbuffer;
char * buffer;
EmptyClipboard();
clipbuffer = GlobalAlloc(GMEM_DDESHARE, strlen(source) + 1);
buffer = (char*)GlobalLock(clipbuffer);
strcpy(buffer, source);
GlobalUnlock(clipbuffer);
SetClipboardData(CF_TEXT, clipbuffer);
CloseClipboard();
}
Si lors du fgets, j'entre "ééé" dans la console et que une fois le programme terminé, je fais CTRL + V, j'obtiens ",,,"
Je pense que le problème vient du fait que la console de Windows utilise la page de code 850 dans laquelle le 'é' vaut 130 et que Visual Studio utilise une autre page de code que je connais pas ou 'é' vaut -23
Code:
int main()
{
char a = 'é'; //a vaut -23
char string[15] = { 0 };
fgets(string, 15, stdin);
//On entre "ééé"
a = string[0];//a vaut 130 ou plutôt -126 étant
//donné que c'est un char
}
La question est comment changer la page de code qu'utilise Visual Studio pour que le 'é' vaille 130 également et qu'il n'y ait plus de problèmes au niveau du copyToClipboard ?