À l'aide de printf, à gauche et à droite justifier de deux chaînes d'une longueur donnée

L'aide de printf en C ou en shell Bash, comment puis-je - gauche et droit-justifier de deux chaînes de caractères (des tableaux de caractères) à une longueur donnée?

E. g. si les cordes sont "pile" et "dépassement", et la longueur est de 20 caractères, je souhaite imprimer

stack-------overflow

(pour plus de clarté, chaque espace est représenté comme un tableau de bord).

Les chaînes sont de longueur inconnue. Si la longueur totale + 1 dépasse la longueur de la donnée, est-il possible de tronquer une ou deux chaînes direction donnée et laisser un espace entre eux? E. g. si la longueur est de 10, peut-on obtenir un de ces?

stack-over
stack-flow
s-overflow
k-overflow

Je sais que printf("%10s", string) justifie une chaîne à droite et printf("%-10s", string) justifie une chaîne à gauche, mais ne peut pas trouver un moyen de justifier de 2 chaînes de caractères, ou de les tronquer.

OriginalL'auteur Gnubie | 2012-09-28