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