Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Вопрос по printf


Автор: UserNet 21.2.2012, 12:51
Здравствуйте, возник такой вопрос
можно ли сделать  так?
Код

printf("%-strlen(name).strlen(name)s",name)

Автор: Фантом 21.2.2012, 13:10
Нет. Форматная строка - это именно строка, eval() в компилируемых языках не работает.  smile Но ее можно предварительно сформировать в нужном Вам виде.

Автор: Fynivx 21.2.2012, 15:28
Может быть, имеется ввиду вот это?
Код

printf( "-%i.%i%s\n", strlen(name), strlen(name), name );


На выводе получим (если name=="name"):

-4.4name

-----
printf принимает произвольное количество параметров. Все кроме первого - произвольного типа. Первый - строковая константа, согласно которой форматируется вывод последующих параметров.
если сильно упростить, вот:
%s - строка
%i - целое число
%f - число с плавающей точкой.
И еще куча всяких прелестей, которые нужны для узкого профиля задач типа вывести число в шестнадцатиричном виде и тд.

Автор: Фантом 21.2.2012, 16:42
Цитата(Fynivx @  21.2.2012,  16:28 Найти цитируемый пост)
Может быть, имеется ввиду вот это?

Больше похоже, что нужен именно изменяемый формат. Другое дело, что смысл его именно в таком виде не очень понятен... короче говоря, как обычно, спрашивать лучше не "можно ли сделать так?", а "как сделать то-то?".

Автор: feodorv 21.2.2012, 20:05
Цитата(Фантом @  21.2.2012,  16:42 Найти цитируемый пост)
короче говоря, как обычно, спрашивать лучше не "можно ли сделать так?", а "как сделать то-то?". 

Это точно)))

Цитата(Fynivx @  21.2.2012,  15:28 Найти цитируемый пост)
Может быть, имеется ввиду вот это?

А мне вот показалось, что имеется в виду такое:
Код

printf( "%-*s", size1, name);
printf( "%-.*", size2, name);
printf( "%-*.*s", size1, size2, name);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)