Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2014, 18:29   #1
Colobok
Пользователь
 
Регистрация: 25.03.2013
Сообщений: 14
По умолчанию Передать параметры в main

Форумчане, есть процесс, который порождает дочерний процесс, в котором вызывется через функцию exec() выполнение исполняемого файла (cpp). Какую разновидность функции exec() необходимо использовать, и как передать в функцию main() исполняемого файла два параметра типа float?
Colobok вне форума Ответить с цитированием
Старый 13.10.2014, 18:44   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

передавать в виде строк в формате, понятном atof, или чем там преобразования делать планируется. По поводу exec, выбирайте: http://www.codenet.ru/progr/cpp/spr/084.php
pu4koff вне форума Ответить с цитированием
Старый 13.10.2014, 19:08   #3
Colobok
Пользователь
 
Регистрация: 25.03.2013
Сообщений: 14
По умолчанию

Не могли бы вы привести строчку кода с вызовом exec() и передачей этих двух параметров, и какой должна быть строка принимающей main(). простите за наглость - у меня проблемы с указателями если честно. Бьюсь уже третий день над этой строкой. Хотябы примерный вид.
Colobok вне форума Ответить с цитированием
Старый 13.10.2014, 19:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и какой должна быть строка принимающей main()
А по-моему это от компилятора зависит.
В VS так:
Код:
int _tmain(int argc, _TCHAR* argv[])
В остальных видимо так: http://cppstudio.com/post/421/
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 19:26   #5
Colobok
Пользователь
 
Регистрация: 25.03.2013
Сообщений: 14
По умолчанию

вот как разобраться с параметрами? int argc это вроде как число всех параметров, правильно? а char ** argv как с этим разобраться? коворю - указатели в упор не могу воспринять. указатель на указателе. вот как туда передать эти два параметра. Пишу под линукс g++.
int main (int argc, char** argv ) понимаю, что флоат сначала в стринг преобразовать. но эти указатели... т.е мы еще должны передать переменную с количеством параметров?

Последний раз редактировалось Colobok; 13.10.2014 в 19:28.
Colobok вне форума Ответить с цитированием
Старый 13.10.2014, 19:32   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

И даже ссылка, что я дал не помогает?
Чьерт побьери, что же делать??
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2014, 19:46   #7
Colobok
Пользователь
 
Регистрация: 25.03.2013
Сообщений: 14
По умолчанию

int main (int argc, char** argv )
{
char *str[10];
int a = 512;
sprintf(*str, "%9d", a);
(void)execv ("./Lab_10_2k",*str);

return 0;
}

А вот так ругается компилятор
Lab_pr.cpp:22:32: error: cannot convert ‘char*’ to ‘char* const*’ for argument ‘2’ to ‘int execv(const char*, char* const*)’
(void)execv ("./Lab_10_2k",*str);
Colobok вне форума Ответить с цитированием
Старый 15.10.2014, 14:24   #8
Colobok
Пользователь
 
Регистрация: 25.03.2013
Сообщений: 14
По умолчанию

Ни как не получается передать два параметра.
Вот код основной программы:
Код:
int main (int argc, char *argv[] )
{
int n=10;
char *par6[3];
char *par7[3];

double a = 111.111;
double b = 222.222;
gcvt(a,   n,   *par6);
gcvt(b,   n,   *par7);
char *const par1[]={ *par6, *par7};
execv ("./Lab_10_2k",par1);

return 0;
}
а Это код вызывемой программы
Код:
main (int argc, char *argv[])
{
zcout<<"Hello"<<endl;
cout<<*argv<<endl;
cout<<*(argv+1)<<endl;

return 0;
}
самое интересное: если вставить char *const par1[]={ "*par6", "*par7"}; то все работает и мы на выводе видим *par6 *par7

еще такая проблема, если один раз использовать gcvt(a, n, *par6); и передать char *const par1[]={ *par6, "*par7"}; то передается число и на выводе получим 111.111 *par7

Последний раз редактировалось Stilet; 15.10.2014 в 14:56.
Colobok вне форума Ответить с цитированием
Старый 15.10.2014, 14:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
main (int argc, char *argv[])
{
zcout<<"Hello"<<endl;
cout<<argс<<endl;
cout<<argv[1]<<endl;

return 0;
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Exception in thread "main" java.lang.NullPointerException at Main.main(Main.java:9) elpilasgsm Помощь студентам 4 18.01.2011 08:23
Как передать параметры в SWFUpload Marsik PHP 1 31.07.2010 13:38
Как передать в поток параметры? И как из потока параметры достать? Anekdot Общие вопросы Delphi 2 19.02.2010 22:40
параметры main neo-n Общие вопросы C/C++ 1 04.12.2008 08:33
KEY_EVENT_RECORD какие передать параметры? ERASERROR Общие вопросы Delphi 1 21.02.2008 21:55