Stellen Sie die Breite der variablen Textspalte in printf ein

Um die Größe der Spalte in C Sprache zu bestimmen, verwenden wir %d . Zum Beispiel kann ich %3d und es wird mir eine Spalte mit der Breite = 3 geben. Mein Problem ist, dass meine Zahl nach dem % eine Variable ist, die ich erhalte, also brauche ich etwas wie %xd (wobei x die Integer-Variable ist, die ich irgendwann zuvor in meinem Programm erhalten habe). Aber es funktioniert nicht.

Gibt es einen anderen Weg, dies zu tun?

Sie können dies folgendermaßen tun:

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

Aus Lees Kommentar:
Sie können auch ein * für die Präzisionsgröße verwenden:

 printf("%*.*f", width, precision, value); 

Nur der Vollständigkeit printf() möchte ich erwähnen, dass Sie bei POSIX-konformen Versionen von printf() auch den Wert für die Feldbreite (oder die Genauigkeit) an anderer Stelle in der Parameterliste angeben und mit der 1-basierten Parameternummer gefolgt von a darauf verweisen können Dollarzeichen:

Eine Feldbreite oder -genauigkeit oder beides kann durch ein Sternchen ‘*’ oder ein Sternchen gefolgt von einer oder mehreren Dezimalziffern und einem ‘$’ anstelle einer Ziffernfolge angezeigt werden. In diesem Fall liefert ein int-Argument die Feldbreite oder -genauigkeit. Eine negative Feldbreite wird als eine linke Anpassungsflagge gefolgt von einer positiven Feldbreite behandelt; Eine negative Genauigkeit wird behandelt, als ob sie fehlte. Wenn eine einzelne Formatanweisung positionelle (nn $) und nicht-positionale Argumente kombiniert, sind die Ergebnisse nicht definiert.

ZB printf ( "%1$*d", width, value );