printf chaîne de caractères de longueur variable, élément

#define SIZE 9
int number=5;
char letters[SIZE]; /* this wont be null-terminated */
... 

char fmt_string[20];
sprintf(fmt_string, "%%d %%%ds", SIZE);
/* fmt_string = "%d %9d"... or it should be */

printf(fmt_string, number, letters);

Est-il une meilleure façon de le faire?

  • Vous semblez être la construction d'une chaîne de format. Mais vous devriez être à l'affectation de la chaîne de caractères retournée par sprintf à fmt_string et fmt_string ne devrait pas être dans la liste des paramètres.
  • Est-il une raison particulière pour laquelle vous dire que letters de ne pas être nul?
  • c'était pour un problème de recherche avec un grand jeu de données où je ne pouvais pas se permettre de l'espace pour contenir des caractères null.
  • REMARQUE: c'est la duplicité de stackoverflow.com/questions/2239519/...