|
|
|
функция производная от sprint_f()
|
|||
|---|---|---|---|
|
#18+
Всех с прошедшими... Скорее всего туплю, но интересует следующее: как можно передать в функцию производную от sprintf_s последний параметр (...) например, Код: plaintext 1. 2. 3. Спасибо! -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 11:58 |
|
||
|
функция производная от sprint_f()
|
|||
|---|---|---|---|
|
#18+
сам разобрался ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 16:55 |
|
||
|
функция производная от sprint_f()
|
|||
|---|---|---|---|
|
#18+
Cerebrumсам разобралсяобычно принято выкладывать решения, чтобы страждущие могли их находить Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2007, 17:26 |
|
||
|
функция производная от sprint_f()
|
|||
|---|---|---|---|
|
#18+
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); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 09:43 |
|
||
|
функция производная от sprint_f()
|
|||
|---|---|---|---|
|
#18+
Виноват, исправлюсь (не хотелось флудить), но решение нашел на rsdn.ru, просто поискав по sprintf оно заключалось в отказе от использования это функции в пользу vsprintf_s, которая в качестве последнего параметра принимает va_list , ну а использование уже было описано уважаемым Akh . Позволю себе лишь одну оговорку, о том как можно узнать необходимый размер буфера для этой операции. Это позволяет сделать функция _vscprintf (если ее результ умножить на размер char или wchar_t, в зависимости от того что вы используете в своем проекте). -------------------------------------------------------------- [подпись с другого сайта] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2007, 10:09 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34253984&tid=2029672]: |
0ms |
get settings: |
6ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 467ms |

| 0 / 0 |
