Cher journal je vais te faire part d'une decouvèrte que j'ai faite et qui apparement n'est pas tres connu mais justement meriterait de l'être:
asprintf
Cette fonction est l'équivalent de sprintf, mais elle alloue à la taille voulue le buffer passé par un pointeur en premier argument.
Seul probleme c'est que pour la glibc donc adieu portabilité.
Dans le meme genre le %a de sscanf alloue automatiquement la mémoire nécessaire
Bon voila si ca pouvait en aider quelques uns
# oui mais ....
Posté par KDYY4RF . Évalué à -1.
[^] # Re: oui mais ....
Posté par Ph Husson (site web personnel) . Évalué à 3.
[^] # Re: oui mais ....
Posté par TImaniac (site web personnel) . Évalué à -4.
(au fait la glib est relativement portable tout de même)
[^] # Re: oui mais ....
Posté par Ph Husson (site web personnel) . Évalué à 4.
la glib sans rien vient de GTK
[^] # Re: oui mais ....
Posté par TImaniac (site web personnel) . Évalué à -1.
[^] # Re: oui mais ....
Posté par Sasuke . Évalué à 1.
[^] # Re: oui mais ....
Posté par zerchauve . Évalué à 2.
http://geradon.be/archives/000930.html(...)
[^] # Re: oui mais ....
Posté par Sasuke . Évalué à 1.
(un point godwin : http://fr.wikipedia.org/wiki/Loi_de_Godwin(...))
# asprintf portable
Posté par Christophe Fergeau . Évalué à 1.
[^] # Re: asprintf portable
Posté par Ph Husson (site web personnel) . Évalué à 1.
J'y retournerais
Enfin vu que faire du C sans la glib ça tient du masochisme...
Moi on me l'interdit strictement j'ai toujours pas compris pourquoi
j'croi que c'etait soit disant que ca rajoutant une liste de deps pas possible (bien sur c'est meme pour ca que arts utilise la glib pour dependre de gtk ET de qt)
[^] # Re: asprintf portable
Posté par Christophe Fergeau . Évalué à 2.
La prochaine personne qui te dit ça tu lui mets qques baffes de ma part pour lui apprendre à dire n'importe quoi ? ;)
$ apt-cache depends libglib2.0-0
libglib2.0-0
Dépend: libc6
Recommande: libglib2.0-data
$ apt-cache depends libglib2.0-data
libglib2.0-data
Dépend: libglib2.0-0
Est en conflit avec: <libglib1.3-data>
Remplace: <libglib1.3>
Remplace: <libglib1.3-data>
>Pour tout te dire le asprintf c'est dans la glib que je l'ai trouve (tien accents qui
>marchent po), mais j'ai pas trouve la partie portable extra glibc :/
cf g_vasprintf dans gprintf mais qui utilise à son tour d'autres fonctions...
[^] # Re: asprintf portable
Posté par thomas . Évalué à 2.
[^] # Re: asprintf portable
Posté par Ph Husson (site web personnel) . Évalué à 1.
par cotnre me suis ptet planté dans mes explications
[^] # Re: asprintf portable
Posté par beb . Évalué à 3.
tu n'exagèrerais pas un petit peu la quand même ? Qu'est ce qu'il y a de si indispensable dans la glib ?
[^] # Re: asprintf portable
Posté par Christophe Fergeau . Évalué à 4.
* Des types de données fort utiles (listes, tables de hachages, ...)
* Gestion de l'utf8 (un peu plus anecdotique peut être)
# asprintf est beau
Posté par gc (site web personnel) . Évalué à 2.
-----------8<--------------------8<--------------------8<--------------------8<---------
char * vasprintf_(const char *msg, va_list args)
{
char s[8192];
vsnprintf(s, sizeof(s), msg, args);
return strdup(s);
}
// _GNU_SOURCE's asprintf like, but
// - doesn't need _GNU_SOURCE
// - returns allocated string
char * asprintf_(const char *msg, ...)
{
char * results;
va_list arg_ptr;
va_start(arg_ptr, msg);
results = vasprintf_(msg, arg_ptr);
va_end(arg_ptr);
return results;
}
-----------8<--------------------8<--------------------8<--------------------8<---------
(un peu de travail supplémentaire si on veut supporter les chaînes très longues)
[^] # Re: asprintf est beau
Posté par Vivi (site web personnel) . Évalué à 2.
[^] # Re: asprintf est beau
Posté par gc (site web personnel) . Évalué à 2.
CONFORMING TO
SVID 3, BSD 4.3. strndup(), strdupa(), and strndupa() are GNU extensions.
[^] # Re: asprintf est beau
Posté par Vivi (site web personnel) . Évalué à 2.
[^] # Re: asprintf est beau
Posté par gc (site web personnel) . Évalué à 2.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.