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).