Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Новый направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / C/C++

Выпуск № 892
от 30.10.2007, 13:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 480, Экспертов: 66
В номере:Вопросов: 1, Ответов: 2


Вопрос № 106653: Здравствуйте эксперты, Читал на досуге Стивена Прата, у него есть задачка : Напишите программу, которая запрашивает имя и выполняет с ним следующие действия : Печатает его в поле шириной , на три символа превышающем длину имени. Со сп...

Вопрос № 106.653
Здравствуйте эксперты,
Читал на досуге Стивена Прата, у него есть задачка :
Напишите программу, которая запрашивает имя и выполняет с ним следующие действия :
Печатает его в поле шириной , на три символа превышающем длину имени.
Со спецификаторами преобразования в printf знаком , как вычислить длину имени тож понятно , прибавить 3 не проблема.
Спецификатор в данном случае выглядит %s , задать ширину поля %10s ... а вот как туда воткнуть %d с +3 ...
Помогите разобраться ...
Отправлен: 24.10.2007, 22:38
Вопрос задал: Mike V Dao (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 5)

Отвечает: Воробьёв Алексей Викторович
Здравствуйте, Mike V Dao!

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

Это вырезка из статьи на http://ru.wikipedia.org/wiki/Printf
Ответ отправил: Воробьёв Алексей Викторович (статус: 7-ой класс)
Ответ отправлен: 25.10.2007, 06:06
Оценка за ответ: 5
Комментарий оценки:
Спасибо ! решил проблему вот так : #include "stdafx.h" #include "string.h" int main() { char name[40]; printf("Plz enter the number :"); scanf("%s",&name); printf("\\"%- *s\\"", strlen(name)+3, name); return 0; }

Отвечает: Sergey A. Wedensky
Здравствуйте, Mike V Dao!
Можно строку формата сначала сформировать, а потом использовать:

char s[] = "name";
char fmt[8];
sprintf(fmt, "%%%ds", strlen(s)+3);
char str[64];
sprintf(str, fmt, s);
Ответ отправил: Sergey A. Wedensky (статус: Студент)
Ответ отправлен: 25.10.2007, 10:22
Оценка за ответ: 5
Комментарий оценки:
Спасибо !


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.61.1 от 16.10.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное