Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Переменное число параметров на Си 
:(
    Опции темы
v2v
Дата 27.2.2008, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



Есть функция на Си, которая в качестве параметров принимает массив строк(const char *).
Код

function("param1","param2", ... )

мне надо передать 100 одинаковых параметров, как мне сделать масив и передать его?
Вот так:
Код

char s[100][2] ={"p1","p2", ... "p100"}
function(s) 

передаёт только первый параметр, а как сделать что - бы прошли все 100 !?



--------------------
PM   Вверх
Alek86
Дата 27.2.2008, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



передай s (это указатель типа char**) и 2 int'а - размерности
а в функции уже используй s[i1][i2]

Добавлено через 38 секунд
кстати  s[i1] имеет тип char*


--------------------
user posted image    user posted image
PM MAIL   Вверх
v2v
Дата 27.2.2008, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



функция не моя. я только её использую. никакую размерность я передавать не могу.

Добавлено через 1 минуту и 11 секунд
Цитата(Alek86 @  27.2.2008,  14:41 Найти цитируемый пост)

кстати  s[i1] имеет тип char* 

писать s[0],[s1],...,[s99]  это тоже изврат ... нужен какой то цикл в списке параметров, или ещё что то наподобие.


--------------------
PM   Вверх
chaos
Дата 27.2.2008, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 6
Всего: 44



тогда скорее всего прнимается массив вида
char *mas[N] = {"0", "1", ..., "N-1", NULL};
PM WWW   Вверх
Alek86
Дата 27.2.2008, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



передай

Код

char s[100][2] ={"p1","p2", ... "p100"}
function(s[0], s[1], s[2],/*и так далее*/ , s[100])



--------------------
user posted image    user posted image
PM MAIL   Вверх
v2v
Дата 27.2.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



Цитата(Alek86 @  27.2.2008,  14:49 Найти цитируемый пост)
передай

char s[100][2] ={"p1","p2", ... "p100"}
function(s[0], s[1], s[2],/*и так далее*/ , s[100])


читай выше.smile


--------------------
PM   Вверх
marcusmae
Дата 27.2.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



А поиск никому не прибавил знаний?

Код

#include <stdarg.h>

void myprintf(const char *fmt, ...)
{
va_list ap;
va_start(ap, txt);

/* аргументы - в ap */

vprintf(fmt, ap);
va_end(ap);
}



--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
v2v
Дата 27.2.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



СИ!
это во первых, а во вторых надо ещё и название структуры правильное знать ... в вашем случае!

Добавлено через 4 минуты и 23 секунды
Цитата(chaos @  27.2.2008,  14:48 Найти цитируемый пост)
тогда скорее всего прнимается массив вида
char *mas[N] = {"0", "1", ..., "N-1", NULL}; 

у меня специфический интерпритатор, и он на такую конструкцию ругается: даже не компилируется.

Это сообщение отредактировал(а) v2v - 27.2.2008, 14:57


--------------------
PM   Вверх
marcusmae
Дата 27.2.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Цитата(v2v @  27.2.2008,  14:56 Найти цитируемый пост)
надо ещё и название структуры правильное знать


а что, хедер stdarg.h не поддаётся прочтению..?



--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Alek86
Дата 27.2.2008, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



циклов, которые создают код в чистом Си нету
даже в С++ только жалкое подобие :(

так что пиши ручками...


--------------------
user posted image    user posted image
PM MAIL   Вверх
marcusmae
Дата 27.2.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



Цитата(v2v @  27.2.2008,  14:56 Найти цитируемый пост)
СИ!


Что? Здесь где-то плюсы задейстованы? А как же по Вашему printf в Си работает?


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
v2v
Дата 27.2.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



в общем вариант из stdarg.h тоже не подходит...наверное всё таки придётся руками...


--------------------
PM   Вверх
xvr
Дата 28.2.2008, 14:55 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(v2v @ 27.2.2008,  14:31)
Есть функция на Си, которая в качестве параметров принимает массив строк(const char *).
Код

function("param1","param2", ... )

мне надо передать 100 одинаковых параметров

Так одинаковых или разных?

Цитата

, как мне сделать масив и передать его?
Массив тут не пройдет, нужно передать именно 100 параметров  smile 
Можно сделать через препроцессор, например так (100 ОДИНАКОВЫХ параметров)
Код

#define P1 "param"
#define P2 P1,P1
#define P4 P2,P2
#define P8 P4,P4
#define P16 P8,P8
#define P32 P16,P16
#define P64 P32,P32

function(P4,P32,P64);


PM MAIL   Вверх
MAKCim
Дата 28.2.2008, 15:13 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



xvr, 
это пять  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
v2v
Дата 28.2.2008, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

Репутация: нет
Всего: 56



нет. не подойдёт.
значения параметров формируются по ходу выполнения программы (


--------------------
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0997 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.