Форум программистов, компьютерный форум CyberForum.ru

Как создать va_list для _vsntprintf ? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обработка исключений http://www.cyberforum.ru/cpp-beginners/thread22975.html
Как сделать обработку исключения так, чтобы, если, например, вводим количество координат больше, чем можно, программа предлагала, или выйти, или попробовать ввести ещё раз. Я пробовал с помощью switch, но там если ввести первый раз неправильно, то он запускается, если ещё раз неправильно, то уже обработка исключения не идёт, то есть, нужно под каждый неправильный ввод писать новый ввод объекта и...
C++ Лежит ли точка в круге и треугольнике Даны круг и треугольник на плоскости.Кординаты вводятся с клавиатуры.Даны кординаты точки. Узнать лежит ли точка в области пересечения 2ух фигур http://www.cyberforum.ru/cpp-beginners/thread22972.html
Чтобы звездочка бегала по краям экрана C++
Доброго времени суток, уважаемые программисты! Нужна помощь. Написал программу на Borland C++, которая заполняет экран ASCII символом * (звездочка), вся проблема в том что она заполняет экран от начала до конца а я хочу улучшить программу чтобы звездочка бегала по краям экрана притом чтобы не было видно предыдущую. Не могу понять как это сделать. Вот нынешний код: #include<stdio.h>...
C++ надо программу, в которой задача состоит в том, чтобы найти точку на двумерной сетке
Точка, безусловно, определяется координатами. Сетка должна иметь определенный размер, например, от 100 до 100 меш. Программа должна в начале своей деятельности выбирать точку на сетке(случайно), и задача пользователя будет,выбирать точку на сетке координат. В ответ, программа должна найти расстояние между точками и вывести на екран. Ето будет проиcходить до тех пор пока пользователь не угадает...
C++ Классы в Turbo C/Borland C http://www.cyberforum.ru/cpp-beginners/thread22951.html
Класс для объекта-вектора, что задается координатами концов. Создать операции сложения и отнимания. Можете написать как должен выглядеть этот класс?
C++ Сортировка массива структур Имеется массив структур, который необходимо отсортировать по числовому ключу. Я написал код, но он не работает, поэтому просьба указать на ошибку. #include <stdio.h> #include <stdlib.h> int i; typedef struct { подробнее

Показать сообщение отдельно
alex63
Сообщений: n/a

Как создать va_list для _vsntprintf ? - C++

11.02.2009, 15:52. Просмотров 2801. Ответов 2
Метки (Все метки)

Программирование хобби. В основном программирую на Autolispe.

Хотелось бы иметь функцию аналогичную swprintf или _vsntprintf
Написал функцию для одного аргумента через вызов swprintf(szBuffer,format,var);
Хотелось бы иметь На autoLispe ->(format "%s %d %f" "Test=" 120 63.4)
функцию с переменным количеством аргументов.

На Си ->_vsntprintf(szBuffer, sizeof(szBuffer)/izeof(szBuffer[0]), lpszFormat, args)
где va_list это args .

Как создать тип va_list ?
Какова структура списка va_list ?
Во всех примерах показано как обработать функцию с переменным кол-вом аргументов.
Но как создать самому тип va_list?
Подскажите кто знает?
Заранее благодарен.


Пример функции format для AutoLisp с 1им аргументом (format "T=%d" 10)-> "T=10"

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
static int ads_format(void)
    {
        struct resbuf  *rb=acedGetArgs () ;
        struct resbuf *p;
 
        p=rb;
 TCHAR format[512];
 TCHAR buff[512];
 TCHAR *ret;
 TCHAR vs[512];
int i1;
double d1;
 
if(rb == NULL) return RTNORM;
 
if (rb->restype == RTSTR) wcscpy(format,rb->resval.rstring);//strcpy
  else {  acdbFail(_T("\n1 Argument should be an string."));
       return (RTERROR); 
  }
 rb=rb->rbnext;
if(rb == NULL) { //acutPrintf(temp);
                 ret=strsave(buff);
                 acedRetStr(ret);                
                 return (RSRSLT) ;
}
if (rb->restype == RTSTR)  {
  wcscpy(vs,rb->resval.rstring); // строка
  swprintf(buff,format,vs);     
}
else if (rb->restype == RTSHORT)  // целое
 {
   i1=rb->resval.rint;   
   swprintf(buff,format,i1);
 }
  else if(rb->restype == RTREAL) // вещественное
  {
    d1=rb->resval.rreal;    
    swprintf(buff,format,d1);   
  }
   else
   {
      acdbFail(_T("\n2 Argument should be an integer double string."));   
      return (RSRSLT) ;
   }
 
ret=strsave(buff);
 
acedRetStr(ret);
ads_relrb(p);
return (RSRSLT);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru