Per determinare la dimensione della colonna in linguaggio C usiamo %d
. Per esempio, posso digitare %3d
e mi darà una colonna di larghezza = 3. Il mio problema è che il mio numero dopo il %
è una variabile che ricevo, quindi ho bisogno di qualcosa come %xd
(dove x
è la variabile intera che ho ricevuto prima nel mio programma). Ma non sta funzionando.
C’è un altro modo di fare questo?
Puoi farlo come segue:
printf("%*d", width, value);
Dal commento di Lee:
Puoi anche usare un * per le dimensioni di precisione:
printf("%*.*f", width, precision, value);
Solo per completezza, volevo menzionare che con le versioni conformi a POSIX di printf()
puoi anche inserire il valore effettivo della larghezza del campo (o precisione) da qualche altra parte nell’elenco dei parametri e fare riferimento ad esso usando il numero di parametro basato su 1 seguito da un simbolo del dollaro:
Una larghezza o precisione del campo, o entrambi, possono essere indicati con un asterisco ‘*’ o un asterisco seguito da una o più cifre decimali e un ‘$’ invece di una stringa di cifre. In questo caso, un argomento int fornisce la larghezza o la precisione del campo. Una larghezza di campo negativa viene trattata come un flag di regolazione sinistro seguito da una larghezza di campo positiva; una precisione negativa viene trattata come se mancasse. Se una direttiva per singolo formato combina argomenti posizionali (nn $) e non posizionali, i risultati non sono definiti.
Ad esempio, printf ( "%1$*d", width, value );