2016-05-10 13 views
1

Ich versuche, width array zum Drucken von Variablen in bestimmten Breiten zu verwenden. Ich möchte etwas tun, wielesen von einem Array in printf arg. printf ("% widthArr [0] u,% widthArr [1] u", var1, var2)

int widthArr[] = {5, 4}; 
uint32_t var1 = 123; 
uint32_t var2 = 4567; 
printf("%widthArr[0]u, %widthArr[1]u ", var1, var2); 

aber die tatsächlichen Werte von widthArr für die Breiten verwenden. Kann das gemacht werden?

+0

Was ist Ihr Programm zu tun? Drucken Sie die Werte in 'widthArr [0]' und 'widthArr [1]'? – jboockmann

+0

Hi @pythoos, das Programm muss die Variablen in verschiedenen Breiten drucken. wie printf ("% 5u,% 4u", var1, var2); – moshebart

+1

Hinweis: Verwenden Sie 'PRIu32' anstelle von' "% u" '. '"% u "' ist für 'unsigned', nicht notwendigerweise' uint32_t'. – chux

Antwort

4

Statt Hartcodierung der Breite können Sie einen * Modifikator verwenden, um die Feldbreite von den Argumenten zu lesen, wie folgt aus:

printf("%*u, %*u ", widthArr[0], var1, widthArr[1], var2); 
// prints " 123, 4567 " 

Von the C++ reference page:

In dem Fall, wenn * wird verwendet, die Breite wird durch ein zusätzliches Argument vom Typ int angegeben.

Beachten Sie, dass Sternchen auch verwendet werden können, um die Genauigkeit dynamisch festzulegen.