Bonjour,
J'essaye de refaire une partie de la fonction printf concernant les modificateur de longueurs, je bloque plus précisément sur le ' l ' avec des strings.
Extrait de la documentation :
(elle) La conversion entière suivante correspond à un long int ou unsigned long int, ou la conversion n suivante correspond à un pointeur sur un long int, ou la conversion c suivante correspond à un argument wint_t, ou encore la conversion s suivante correspond à un pointeur sur un wchar_t.Il faut savoir que je renvois toujours un char * afin que la "prochaine partie " de printf puisse manipuler la chaine (largeur, précision, attribut, ... ) bref tout le reste fonctionne. La fonction wconvert() stock le wchar_t dans un char *
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 wchar_t *var = va_arg(*ap, wchar_t *); return wconvert(var);
Le rendu :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int main(void) { printf("%ls\n", "Bonjour"); my_printf("%ls\n", "Bonjour"); //Fonctionne pas printf("%ls\n", L"Bonjour"); my_printf("%ls\n", L"Bonjour"); Fonctionne }
Comment faire pour que my_printf ne se fasse pas bien piéger quand l'utilisateur envoi une chaine normal (char *) et non une L"chaine" (wchar_t *) ?(saut de ligne uniquement \n)
Bo (ou Bo suivi de n'importe quoi )
Bonjour
Bonjour
A noté, que pour tester ce comportement, je dois compilé sans les flags (-Wall -Werror et -Wextra ), merci pour votre aide.
Partager