Консультация № 106653
24.10.2007, 22:38
0.00 руб.
0 2 2
Здравствуйте эксперты,
Читал на досуге Стивена Прата, у него есть задачка :
Напишите программу, которая запрашивает имя и выполняет с ним следующие действия :
Печатает его в поле шириной , на три символа превышающем длину имени.
Со спецификаторами преобразования в printf знаком , как вычислить длину имени тож понятно , прибавить 3 не проблема.
Спецификатор в данном случае выглядит %s , задать ширину поля %10s ... а вот как туда воткнуть %d с +3 ...
Помогите разобраться ...

Обсуждение

Неизвестный
25.10.2007, 06:06
общий
это ответ
Здравствуйте, Mike V Dao!

Если в качестве ширины указана звёздочка, ширина поля указывается в списке аргументов перед значением для вывода (например, printf( "%0*5x", 8, 15 ); выведет текст 0000000f).

Это вырезка из статьи на http://ru.wikipedia.org/wiki/Printf
Неизвестный
25.10.2007, 10:22
общий
это ответ
Здравствуйте, Mike V Dao!
Можно строку формата сначала сформировать, а потом использовать:

char s[] = "name";
char fmt[8];
sprintf(fmt, "%%%ds", strlen(s)+3);
char str[64];
sprintf(str, fmt, s);
Форма ответа