Définir la largeur de la colonne de texte variable dans printf

Pour déterminer la taille de la colonne en langage C, nous utilisons %d . Par exemple, je peux taper %3d et cela me donnera une colonne de width = 3. Mon problème est que mon numéro après le % est une variable que je reçois, donc j’ai besoin de quelque chose comme %xd (où x est la variable entière que j’ai reçue auparavant dans mon programme). Mais ça ne marche pas.

Y a-t-un autre moyen de faire ça?

Vous pouvez le faire comme suit:

 printf("%*d", width, value); 

D’après le commentaire de Lee:
Vous pouvez également utiliser un * pour la taille de précision:

 printf("%*.*f", width, precision, value); 

Pour être plus complet, je voulais mentionner que, avec les versions compatibles POSIX de printf() vous pouvez également placer la valeur réelle de la largeur (ou précision) dans la liste des parameters et y faire référence avec le numéro de paramètre signe dollar:

Une largeur ou une précision de champ, ou les deux, peuvent être indiquées par un astérisque «∗» ou un astérisque suivi d’un ou de plusieurs chiffres décimaux et d’un «$» au lieu d’une chaîne de chiffres. Dans ce cas, un argument int fournit la largeur ou la précision du champ. Une largeur de champ négative est traitée comme un indicateur d’ajustement à gauche suivi d’une largeur de champ positive; une précision négative est traitée comme si elle manquait. Si une directive de format unique mélange des arguments positionnels (nn $) et non positionnels, les résultats ne sont pas définis.

Par exemple, printf ( "%1$*d", width, value );