Поля ширины и прецизионности спецификатора %s
могут использоваться для печати изображения.
В поле ширины будет напечатано как минимум требуемое количество символов, а в поле точности будет напечатано необходимое количество символов.,Значения могут использоваться в спецификаторе, или звездочка может использоваться для получения значения из аргументов.
Ввод количества повторений строки определяет ширину поля для левой стороны.На каждой итерации точность увеличивается для количества символов, печатаемых в поле.
Правая сторона должна печатать только то же количество символов, что и левая сторона.
#include <stdio.h>
#define SIZE 8
int main( void) {
char hash[SIZE + 1] = { [0 ... SIZE] '#'};
char input[100] = "";
int repeat = 0;
int result = 0;
do {
printf ( "input height [1 to %d]\n", SIZE);
if ( fgets ( input, sizeof input, stdin)) {//get a line
result = sscanf ( input, "%d", &repeat);//try to scan an integer
}
else {
fprintf ( stderr, "fgets EOF\n");
return 0;
}
} while ( 1 != result || repeat <= 0 || repeat > SIZE);
for ( int each = 0; each < repeat; ++each) {
printf ( "%*.*s %.*s\n", repeat, each + 1, hash, each + 1, hash);
}
return 0;
}