J'essaie de formater certaines instructions printf pour permettre des niveaux d'indentation arbitraires. Idéalement, je veux la sortie suivante où "One", "Deux", etc sont des espaces réservés pour les messages de journal de longueur variable.Espace de longueur variable en utilisant printf
One
Two
Three
Two
One
Je travaille sur l'espacement de longueur variable requis pour l'indentation, et je sais que je peux faire ce qui suit:
printf("%*s", indent_level, "");
mais je me demande s'il y a un moyen de le faire sans la deuxième chaîne vide arg.
Bonne suggestion, mais la chaîne de sortie est également de longueur variable: printf ("% * s% d,% d,% d,% s, CONSTANT CHARS,% p \ n", indent_level, "",. ..); Il est difficile de déterminer la longueur de cette chaîne sans utiliser de tampon intermédiaire. – bvanvugt
Il vous suffit de connaître la longueur du premier paramètre - par ex. vous pouvez utiliser printf ("% * d,% d, ...", indent_level, param1, ...) – adamk
Je vois pour la première fois ce type d'utilisation de printf, pouvez-vous expliquer pourquoi vous utilisez indent_level + strlen (mystr)? –