Как создать функцию с неопределенным числом аргументов (вроде printf)

Тема в разделе "LANGS.C", создана пользователем _int2e_, 11 май 2009.

Статус темы:
Закрыта.
  1. _int2e_

    _int2e_ New Member

    Публикаций:
    0
    Регистрация:
    1 мар 2009
    Сообщения:
    124
    САБЖ
    Как на сях создать самопальный принтф?
    Точнее, как объявить?
     
  2. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    _int2e_
    Вfc забанbk на гугл? там даже есть пример самопального принтфа, я вас уверяю...


    PS совсем обнаглели...
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Вас забанили на гугле? там всё есть (это для недогадливых, тк редактирование посемуто убрали)
     
  4. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    а чего бы и несамопальный не посмотреть? сорцы то С-либ доступны и идут в поставке
     
  5. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    _basmp_
    вообще говоря почемубы не вписать на сайте googleforidiots.com в специально отведенное поле фразу "с++ функция с переменным числом аргументов"
    И ПО ТРЕТЬЕЙ ССЫЛКИ ПОЛУЧИТЬ ГОТОВЫЙ КОД
    Код (Text):
    1. #include <stdio.h>
    2. #include <stdarg.h>
    3.  
    4. /* minprintf:  ограниченная версия printf
    5.    со списком аргументов переменной длины */
    6. void minprintf(char *fmt, ...)
    7. {
    8.     va_list ap;   /* указатель на безымянные аргументы */
    9.     char *p, *sval;
    10.     int ival;
    11.     double dval;
    12.    
    13.     va_start(ap, fmt); /* установить ap на 1-й аргумент без имени */
    14.     for (p = fmt; *p; p++) {
    15.         if (*p != '%') {
    16.             putchar(*p);
    17.             continue;
    18.         }
    19.         switch (*++p) {
    20.         case 'd':
    21.             ival = va_arg(ap, int);
    22.             printf("%d", ival);
    23.             break;
    24.         case 'f':
    25.             dval = va_arg(ap, double);
    26.             printf("%f", dval);
    27.             break;
    28.         case 's':
    29.             for (sval = va_arg(ap, char *); *sval; sval++)
    30.                 putchar(*sval);
    31.             break;
    32.         default:
    33.             putchar(*p);
    34.             break;
    35.         }
    36.     }
    37.     va_end(ap);   /* завершающие операции */
    38. }
    PS вообще банил бы за темы, ответ на которые ищеться в гугле по названию темы
     
Статус темы:
Закрыта.