информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Spanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 700 с лишним git-серверов пострадало... 
 От повторного пришествия Шаи-Хулуда... 
 Крупный сбой Azure и других сервисов... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Извини, поторопился, 19.11.01 13:54  Число просмотров: 1074
Автор: 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);
}

Но тебе не извесно, сколько и что тебе передают.
Я бы на твоем месте пропарсил входную строку, и узнал, что передали. А дальше, как в приведеном тексте.
<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




Rambler's Top100
Рейтинг@Mail.ru


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