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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как прочесть параметры с которыми запущена програ? 
:(
    Опции темы
vood
  Дата 26.7.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



У меня возник такой вопрос если я запущу свою программу с какаким то параметром, то как мне в ее коде получить к ним доступ? 


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
_hunter
Дата 26.7.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



в main тебе приходит число параметров argc, и сами параметры argv  


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
vood
Дата 26.7.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



_hunter, ты меня конечно извини но в этом массиве у меня передаются имена всех файлов в директории с приложением (хотя я не знаю почему; сам пробовал такое) 


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Romikgy
Дата 26.7.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(vood @  26.7.2006,  10:56 Найти цитируемый пост)
в этом массиве у меня передаются имена всех файлов в директории с приложение

а пример кода можно?
PS во косяк с виндой или чем?  smile  smile  


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Rockie
Дата 26.7.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 8
Всего: 31



vood, argc - кол-во параметров, по умолчанию он равен 1, а в argv[0] сидит полный путь к файлу. это параметр по умолчанию

Код
#include<iostream>
#include<conio>

using namespace std;

int main(int argc, char* argv[])
{
   cout << "argc= "<< argc<<endl;;

   for (int i=0;i<argc;i++)
    { cout<<"argv["<<i<<"]= " <<argv[i]<<endl;
    }
   getch();
   return 0;
}


попробуй запусти "твой_файл 1 2 3" 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
_hunter
Дата 26.7.2006, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 16
Всего: 98



Цитата(vood @  26.7.2006,  11:56 Найти цитируемый пост)
в этом массиве у меня передаются имена всех файлов в директории с приложением

значит к то-то их туда пишет. попробуй запустить не из под IDE... 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ptr
Дата 26.7.2006, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



vood, если пишешь под *nix, то проще и лучше будет воспользоваться getopt, getopt_long. Кстати а ты не перепутал argv и envp?

Цитата(Rockie @  26.7.2006,  16:16 Найти цитируемый пост)
а в argv[0] сидит полный путь к файлу.

Вообще-то это не совсем верно, т.к. по-умолчанию argv[0] содержит имя, по которому была вызвана программа (и это необязательно полный путь). А не по умолчанию argv[0] может содержать всё, что угодно.  

Это сообщение отредактировал(а) ptr - 27.7.2006, 05:46


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
Rockie
Дата 26.7.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 8
Всего: 31



Цитата(ptr @  26.7.2006,  12:49 Найти цитируемый пост)
Вообще-то это не совсем верно, т.к. по-умолчанию argv[0] содержит имя, по которому была вызвана программа (и это необязательно полный путь).

ptr, а можно пример в каких случаях нет полного пути?

 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Rockie
Дата 26.7.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: 8
Всего: 31



vood, а компилятор не BC?
 


--------------------
Чтобы иметь большой гардероб - надо иметь большой гардероб.
PM   Вверх
Romikgy
Дата 26.7.2006, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



хоть я и не 
Цитата(Rockie @  26.7.2006,  15:19 Найти цитируемый пост)
ptr

попробуй запустить из реестра или из назначения заданий или через выполнить... 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
NextAlex
Дата 26.7.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.8.2005
Где: Украина, г. Одесс а

Репутация: 2
Всего: 3



Цитата(vood @  26.7.2006,  11:56 Найти цитируемый пост)
 в этом массиве у меня передаются имена всех файлов в директории с приложением

извини за дурацкий вопрос, но с каким аргументом ты запускаешь прогу ?
Код

#include <stdio.h>

int main(int argc, char* argv[]){
    if (argc > 0){
        for (int i = 0; i < argc; i++){
            printf("%s\n", argv[i]);
        }
    }
}

при запуске такого кода с аргументом *,  как раз и получается список всего содержимого директории
это старый прикол и на форуме это было 
--------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ...
PM MAIL ICQ   Вверх
Romikgy
Дата 26.7.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Цитата(NextAlex @  26.7.2006,  20:00 Найти цитируемый пост)
при запуске такого кода с аргументом *,  как раз и получается список всего содержимого директории
это старый прикол и на форуме это было  

Гы а я не знал , надо будет поковырять smile 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
ptr
Дата 27.7.2006, 05:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 661
Регистрация: 31.5.2006
Где: Новосибирск

Репутация: 1
Всего: 14



Цитата(Rockie @  26.7.2006,  20:19 Найти цитируемый пост)
ptr, а можно пример в каких случаях нет полного пути?

Вот примеры (из командной строки вызывается test.exe):
Код

call TeSt.ExE

call test

call .\..\test.exe

call .\..\test


Цитата(Romikgy @  26.7.2006,  20:46 Найти цитируемый пост)
попробуй запустить из реестра или из назначения заданий или через выполнить...  

Из назначенных и через выполнить полный путь будет в argv[0].   

Это сообщение отредактировал(а) ptr - 28.7.2006, 06:00


--------------------
Единственный способ определить границы возможного - это выйти за эти границы, в невозможное.
Артур Кларк.
PM MAIL ICQ   Вверх
NextAlex
Дата 27.7.2006, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 10.8.2005
Где: Украина, г. Одесс а

Репутация: 2
Всего: 3



Romikgy, я уже ковырял - прикольная тема
можно получать список файлов по маске - круче чем стандартный dir  smile 
--------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ...
PM MAIL ICQ   Вверх
vood
Дата 27.7.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



компилятор Dev C++
пишу под винду
параметр передаю строковый 


--------------------
Вы все еще курите ? Тогда мы идем к вам
 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0958 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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