Comment passer le paramètre n à printf (“% nd”, some_int);

Nous connaissons tous les langages basés sur C, printf (“% 11d”, some_int); signifie aligner à droite dans un champ de 11 caractères, mais si je veux remplacer cette constante 11 par une variable dynamic, que vais-je faire?

Vous pouvez utiliser le caractère * pour spécifier la largeur du champ dans son propre argument:

 printf("%*d", some_width, some_int); 

Vous allez lire la page de manuel printf(3) et trouver les éléments suivants:

Au lieu d’une chaîne de chiffres décimaux, on peut écrire “*” ou “* m $” (pour un nombre entier décimal m) pour spécifier que la largeur du champ est donnée dans l’argument suivant ou dans le m-ième argument, respectivement. être de type int.

utilisez la commande linux: “man 3 printf” pour obtenir plus d’informations. Une façon de faire est de

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

où largeur est précision et num est argument à imprimer. Une autre manière équivalente à celle ci-dessus est

  printf("%2$*1$d", width, num); 

Plus généralement, ceci est écrit comme “* m $ d”, où m est int et numéro d’argument.

Pour ce faire, utilisez un équivalent snprintf sur un tampon de tableau de caractères afin de créer votre chaîne de format printf. (Veillez bien sûr à vérifier les dépassements de tampon).