Sto provando a formattare alcune istruzioni printf per consentire livelli arbitrari di indentazione. Idealmente voglio il seguente output dove "One", "Two", ecc. Sono segnaposti per i messaggi di registro a lunghezza variabile.Spazio di lunghezza variabile con printf
One
Two
Three
Two
One
sto lavorando sulla distanza lunghezza variabile necessaria per il rientro, e so che posso fare quanto segue:
printf("%*s", indent_level, "");
ma mi chiedo se c'è un modo per farlo senza la seconda stringa vuota arg.
Buon suggerimento, ma la stringa di output è anch'essa di lunghezza variabile: printf ("% * s% d,% d,% d,% s, CARICA COSTANTE,% p \ n", indent_level, "",. ..); È difficile determinare la lunghezza di quella stringa senza utilizzare un buffer intermedio. – bvanvugt
Devi solo conoscere la lunghezza del primo parametro - ad es. potresti usare printf ("% * d,% d, ...", indent_level, param1, ...) – adamk
Ho la prima volta che uso quel tipo di printf, puoi spiegare perché stai usando indent_level + strlen (mystr)? –