информационная безопасность
без паники и всерьез
 подробно о проекте
Где водятся OGRыПортрет посетителяСтрашный баг в Windows
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Хакеры опять разморозили холодильники... 
 C3RB3R шифрует NAS Synology через... 
 Chainalysis раскрыла взлом собственных... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
posmotri f-ii fprintf() i vfprintf() , esli ne oshibajus, i togda vse poluchitsya 19.11.01 13:58  Число просмотров: 1250
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
<programming>
[C++] передача переменного числа параметров в функцию 19.11.01 13:45  
Автор: coldfire Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Мне нужно из одной финкции с переменным числом параметров вызвать вызвать другую и передать ей те-же параметры.

Например

void MyClass::my_fun(char *format, ...)
{
//вызов одной из стандартных функций
//c переменным числом параметров
fprintf(file, format, /*тут как?*/);
}

Кто не помнит напомню, что с такими функциями работают при помощи va_start, va_arg, va_end

Была у меня идея:
va_list list;
va_start(list, format);
fprintf(file, format, list);

Ясно дело из нее ничего не вышло, list восприняля как один конкретный указатель.

Кто-нибудь что-нибудь умное может сказать?
posmotri f-ii fprintf() i vfprintf() , esli ne oshibajus, i togda vse poluchitsya 19.11.01 13:58  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Спасибо, vfprintf() то что надо! 20.11.01 06:23  
Автор: coldfire Статус: Незарегистрированный пользователь
<"чистая" ссылка>
прототип vfprintf():
int vfprintf( FILE *stream, const char *format, va_list argptr );

и тогда все просто:

void MyClass::myfun(char *format, ...)
{
va_list list;
va_start(list, format);

vfprintf(file, format, list);

va_end(list);
}
Извини, поторопился, 19.11.01 13:54  
Автор: PS <PS> Статус: Elderman
Отредактировано 19.11.01 14:24  Количество правок: 1
<"чистая" ссылка>
сразу и не понял. С перемеными параметрами работают так:

void a(int j, ...)
{
int* pj = &j;

int n = *(pj+1);
int m = *(pj+2);

printf( "%ld, %ld", n, m );
}

void main( )
{
a( 4,7,4);
}

Но тебе не извесно, сколько и что тебе передают.
Я бы на твоем месте пропарсил входную строку, и узнал, что передали. А дальше, как в приведеном тексте.
1





Рейтинг@Mail.ru


  Copyright © 2001-2026 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach