Автор Тема: sprintf1  (Прочитано 2066 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
sprintf1
« : 14 Августа 2012, 11:21:04 »
Нужна (для отладок) такая странная функция. которая вызывается в программе вместо sprintf, и просто вызывает sprintf, передавая ей те параметры, что были переданы ей.
Непомню как такое пишется на Си. Кто помнит напишите.
 

Оффлайн qupl

Re: sprintf1
« Ответ #1 : 14 Августа 2012, 13:09:56 »
Смотри в cstdarg .   В объявлении функции в конце многоточие (...) на месте произвольного количества аргументов.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: sprintf1
« Ответ #2 : 14 Августа 2012, 13:41:26 »
Про многоточие я знаю, но не помню как их передать. Как вызвать sprintf c любым количеством аргументов? (разумеется первые два есть всегда, а дальше без ограничения)
 

Оффлайн qupl

Re: sprintf1
« Ответ #3 : 14 Августа 2012, 14:03:11 »
Как передать в sprintf ? Как обычно, подставив в вызов.  Про cstdarg  прочитал? Там есть макросы для получения этих "произвольных параметров". 
Если совсем лень, то даже Педивикия пишет об этом.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: sprintf1
« Ответ #4 : 14 Августа 2012, 16:20:27 »
Я наверно не понятно спрашиваю.
Я понимаю как в sprintf1 получить и разобрать аргументы, но я непонимаю как вызвать sprintf с произвольным количесвом аргументов. Как это сделать с любым конкретным количеством аргументов понятно, но сколько бы вариантов я зарание не предусмотрел все равно потом потребуются другие. Надо одним вызовом sprintf из sprintf1 поддержать любой список аргументов который будет передаваться sprintf1 для sprintf
 

Оффлайн qupl

Re: sprintf1
« Ответ #5 : 15 Августа 2012, 06:21:05 »
Именно sprintf неизвестное количество не передашь. Но есть vsprintf. которой можно передать весь список аргументов va_list.

Оффлайн mihail_1

  • Местный житель
  • ***
  • Сообщений: 169
Re: sprintf1
« Ответ #6 : 15 Августа 2012, 09:43:01 »
Да, это то что нужно. Спасибо.
 

Теги: