Imposta la larghezza della colonna del testo variabile in printf

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