Rediriger la sortie standard du printf
voila c'est tout bete mais je m en sort pas, je veux faire une sorte de strdup+printf (la fonction existe deja mais ne passe pas sur toute les archi)
donc je fais simplement un 1ere printf pour reccuperer la taille de ma chaine de char
puis un malloc
puis un sprintf
mais le souci est que le 1er printf affiche sur la sortie standard
ce qui est indesirable (le but de ma fonction etant de copier la chaine de char dans un char * et non pas de faire de l'affichage)
donc comment puis je rediriger la sortie standard de ma fonction pour qu'elle ne soit pas visible a l'ecran (de preference vers /dev/null ou tout autre methode compatible multi archi)
un bout de code pour aider :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void *dprintf(const char *format, ...)
{
va_list va;
char *tmp;
int len;
va_start(va, format);
len = vprintf(format, va); // inhiber celui la
if (!(tmp = malloc(sizeof(*tmp) * (len + 1))))
{
printf("Malloc : [FAILED]\n");
return (0);
}
vsprintf(tmp, format, va);
va_end(va);
return (tmp);
} |
merci :)