Bonjour à tous !
Dans mon minikernel en mode protégé, j'ai actuellement une fonction print(char *string) comme ceci :
Quand j'appelle cette fonction : la chaine passée en paramètre ("Machaine" par ex) est stockée en mémoire, où le code ASCII de chaque caractère est stocké en mémoire sous forme de char.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 void print(char *string) { while(*string != 0) { putcar(*string); string++; } }
Or, quand j'introduis un "é" dans ma chaine, il est transformé en deux caractères impossibles à écrire. Ainsi, le code ASCII du "é" tel qu'il serait décrypté serait trop long pour un char et donc "déborderait" sur un autre...
Or le code ASCII d'un 'é' est 130, et quand je demande putcar(130),
cela écrit bien un "é".
Ce serait donc la conversion de la chaine qui donnerait un mauvais code ASCII...
Quelqu'un connaîtrait-il le mauvais code ASCII stocké en mémoire, ou comment résoudre ce problème ?
Merci d'avance
Partager