powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / функция производная от sprint_f()
5 сообщений из 5, страница 1 из 1
функция производная от sprint_f()
    #34253984
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всех с прошедшими...

Скорее всего туплю, но интересует следующее: как можно передать в функцию производную от sprintf_s последний параметр (...)

например,

Код: plaintext
1.
2.
3.
void DerivedFunc(const char* pFrmt, ...)
{
    sprintf_s(pBuff, pBuffSize, pFrmt, .../*<- как сюда передать то, что получит DerivedFunc*/)
}

Спасибо!
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
функция производная от sprint_f()
    #34254209
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам разобрался
...
Рейтинг: 0 / 0
функция производная от sprint_f()
    #34254235
Карабас Барабас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumсам разобралсяобычно принято выкладывать решения, чтобы страждущие могли их находить
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
функция производная от sprint_f()
    #34254754
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mini-Soft Soft Исходники Функции с переменным количеством параметров
/* Задание: Разработать функцию с переменным количеством параметров.
Последовательность вещественных положительных переменных,
ограниченная переменной со значением -1. Функция возвращает
динамический массив, содержащий значения этих переменных. */


#include <stdarg.h>
#include <stdio.h>
#include <windows.h>
#include <string.h>

/* Прототипы функций и глобальные переменные. */
void About(void);
void printsk (char* format,…);
double *dyn_double (double,…);

int main ()
{
About (); /* Вывод информации о программе и авторе. */

double *pp;

/* Вызов функции с переменным числом параметров. */
pp = dyn_double(333.55, 2.655, 552.5, 545.5, 364.552, 543.32, -1.);
printf («\n»);
/* Вывод динамического массива переданных в функцию значений. */
for (int h = 0; pp[h] !=-1; h++)
printf («%f», pp[h]);

/* Вызов функции с переменным числом параметров. */
pp = dyn_double(433.45, 2.65, 554.535, 545.54, 344.552, 353.332,95.2,25.5,362.5, -1.);
printf («\n»);
/* Вывод динамического массива переданных в функцию значений. */
for (int h = 0; pp[h] !=-1; h++)
printf («%f», pp[h]);

getchar(); /* Заглушка. */
return 0;
/* Конец программы. */
}

double *dyn_double (double x,…)
{
int j=0, k=0;
double i=0.0, s=0.0;
va_list uk_arg;
va_start(uk_arg, x); /* установка указателя uk_arg на */
/* первый необязятельный параметр */
if (x!=-1) s = x; /* проверка на пустоту списка */
else return (0);
j++; k = j;
while((i=va_arg(uk_arg,double))!=-1.)
{
printf («%f \n», i);
j++;
}

double *d = new double [j+1];
va_start(uk_arg, x);
d[0] = x;
d[j] = -1;
while (k<j)
{
i=va_arg(uk_arg, double);
d[k] = i;
k++;
}
va_end(uk_arg); /* закрытие списка параметров */
return (d);
}

/* Функция выводит информацию и названии программы и ее авторе */
void About (void)
{
printsk("\n Variable number parameter v.1.0\n\n");
printsk("Автор: \n");
printsk("Назначение: Возвращет дин-й массив с вещественными переменными.\n");
}

/* Преобразования кодовой таблицы для Windows */
void printsk (char* format,...)
{
char buf[100];
va_list ptr;
CharToOem(format,buf);
va_start(ptr,format);
vprintf(buf,ptr);
}
...
Рейтинг: 0 / 0
функция производная от sprint_f()
    #34254824
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Виноват, исправлюсь (не хотелось флудить),
но решение нашел на rsdn.ru, просто поискав по sprintf оно заключалось в отказе от использования это функции в пользу vsprintf_s, которая в качестве последнего параметра принимает va_list , ну а использование уже было описано уважаемым Akh . Позволю себе лишь одну оговорку, о том как можно узнать необходимый размер буфера для этой операции. Это позволяет сделать функция _vscprintf (если ее результ умножить на размер char или wchar_t, в зависимости от того что вы используете в своем проекте).
--------------------------------------------------------------
[подпись с другого сайта]
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / функция производная от sprint_f()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]