Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 73
1

Функция с неуказанным числом аргументов

03.01.2016, 12:36. Показов 1587. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Попытался реализовать функцию, которая выводит свои аргументы(все, кроме первого), но когда запускаю, она дополнительно ещё прописывается два раза строки "щ[". Кто нибудь знает, почему это происходит и как это устранить. Спасибо заранее.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int d(int c ...)
{
    va_list ap;
    va_start(ap,c);
    for(;;)
    {
        char *p = va_arg(ap,char*);
        if(*p==0)break;
        cout<<p<<endl;
    }
    va_end(ap); 
    return 0;
}
void main()
{
    d(0,"1231","234","57");
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.01.2016, 12:36
Ответы с готовыми решениями:

Шаблонная функция с переменным числом аргументов
Сабж. Каким образом можно запретить использование шаблонной функции, если тип одного из аргументов...

Функция с переменным числом аргументов (через шаблоны)
Доброго времени суток! Встал вопрос с реализацией такой функции. template&lt;typename... Args&gt;...

Есть функция с кучей аргументов, как её вызвать в другой функции (если половины аргументов у меня нет)?
Я конечно, понимаю, что на такие вопросы отвечают &quot;почитай книжку&quot;. Я читала, честное слово:)...

Функция с переменным числом аргументов
Здравствуйте, у меня возникла трудность я пытаюсь сделать функцию с переменным числом аргументов...

5
599 / 237 / 69
Регистрация: 08.08.2015
Сообщений: 1,637
03.01.2016, 15:32 2
алексашк, у меня так и не получилось через va_list решил проблему через шаблоны так
1
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 73
04.01.2016, 05:40  [ТС] 3
спасибо, за вариант с шаблонами, но меня интересовало больше сама реализация с помощью va_list.
В целом от проблемы избавиться удалось только через костыль: в условии перед break добавить ещё: if(*p==0||*p==-23)break;
только тогда, все работает, но причину я так и не выяснил.
0
Эксперт С++
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
04.01.2016, 10:27 4
В случае с va_list есть проблема останова. В приведённом фрагменте условием останова служит нулевой указатель, но тогда его и надо самому передавать при вызове функции последним. Или же передавать количество аргументов. Никто за вас эту работу выполнять не станет.
0
Модератор
Эксперт функциональных языков программированияЭксперт Python
36600 / 20329 / 4220
Регистрация: 12.02.2012
Сообщений: 33,635
Записей в блоге: 13
04.01.2016, 10:44 5
Лучший ответ Сообщение было отмечено алексашк как решение

Решение

Загляни сюда
1
0 / 0 / 0
Регистрация: 21.01.2014
Сообщений: 73
09.01.2016, 20:02  [ТС] 6
Цитата Сообщение от Catstail Посмотреть сообщение
Загляни сюда
Спасибо за ссылку, наверное, лучший вариант - это первая строка типов "%d%f...", но если типов слишком много, плюс ещё пользовательские типы, то, наверное, действительно проще шаблоном воспользоваться.
Но посмотрев на свой вариант, все таки интересно, почему же всегда именно два элемента в конце и всегда одни и те же? если я оставлю этот костыль, то будет ли код работать в других средах разработки с другими компиляторами, на другой ОС в конце концов.Короче говоря, будет ли ко переносимым?
0
09.01.2016, 20:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.01.2016, 20:02
Помогаю со студенческими работами здесь

Отсутствуют экземпляры перегруженная функция "pow", соответствующие списку аргументов типы аргументов: (<unknown-type>, double)
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; int main() { double x, y, z, a, b;...

Функции с переменным числом аргументов
Дело было в дизеле после университета. Хотел написать функцию, в которой заранее не будет...

Метод с переменным числом аргументов
И снова здравствуйте! Необходимо реализовать поиск объекта в массиве который соответствует...

Макрос с переменным числом аргументов
Помню что можно и помню что это выгледит как-то так: #define def( a, ... ) /*...*/ Но непомню как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru