0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 10
1

Вывести переменные окружения передаваемые через командную строку

17.05.2016, 17:05. Показов 5189. Ответов 11
Метки нет (Все метки)

Всем привет
дали такое задание: найти и вывести переменные окружения передаваемые через командную строку. не менее 3.
не могу никак понять как это сделать.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.05.2016, 17:05
Ответы с готовыми решениями:

Найти все файлы, в которых есть указанное слово(передается через командную строку).Вывести сведения о нем и строку
Нужно вывести имя файла, размер, права доступа, имя владельца, и строку с указанным словом....

Вывести квадраты чисел от А до В (числа получить через командную строку)
Описать программу, которая выводит на экран квадраты чисел от А до В. (А и В получить с помощью...

Переменные окружения вывести в файл в виде таблицы
Добрый вечер всем, столкнулся с проблемой решения задания . Задание: вывести переменные...

Как через переменные среды настрить язык рабочего окружения?
Всем доброго времени суток. Заранее прошу простить за такой глупый вопрос, но всё же, мне нужна...

11
28 / 20 / 97
Регистрация: 22.10.2015
Сообщений: 304
17.05.2016, 17:09 2
Используйте параметры argc и argv
0
5225 / 3197 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
17.05.2016, 17:12 3
Есть нестандартная версия ф-ции main с третьим аргументом, который является указателем на массив указателей на переменные окружения, возможно речь об этом.

Как-то так (код с SO по первой же ссылке в гугле)
C++
1
2
3
4
5
6
7
8
9
10
int main(int argc, char **argv, char** envp)
{
  char** env;
  for (env = envp; *env != 0; env++)
  {
    char* thisEnv = *env;
    printf("%s\n", thisEnv);    
  }
  return(0);
}
0
0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 10
17.05.2016, 17:19  [ТС] 4
Дело в том что при таком коде выведет все переменные окружения
а мне нужно чтобы вывелось только то что я ввел как парметр строки например я ввожу PATH мне выводит PATH= ....
OS соответсвенно OS=Windows
0
13 / 13 / 9
Регистрация: 16.05.2016
Сообщений: 49
17.05.2016, 17:20 5
FreeCplusplus, не совсем понятно задание. Попробуйте через getenv.

например
C++
1
std::cout << getenv(argv[0]);
0
0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 10
17.05.2016, 17:34  [ТС] 6
мне пишет что getenv unsafe
0
5225 / 3197 / 362
Регистрация: 12.12.2009
Сообщений: 8,101
Записей в блоге: 2
17.05.2016, 17:45 7
Цитата Сообщение от FreeCplusplus Посмотреть сообщение
мне пишет что getenv unsafe
ну значит не используй
0
13 / 13 / 9
Регистрация: 16.05.2016
Сообщений: 49
17.05.2016, 17:55 8
Цитата Сообщение от Alamant Посмотреть сообщение
getenv(argv[0]);
так не надо) в argv[0] имя самой программы.

В общем, написался такой код в VS2015. Рекомендуется отключить precompiled headers. Правда, этот код любит падать под конец. Может быть, getenv действительно unsafe.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <cstdlib>
 
int main(int argc, char **argv)
{
    if (argc < 4) {
        std::cout << "too few arguments\n";
        exit(1);
    }
    
    // std::cout << "argc = " << argc << "\n";
 
    for (int i = 1; i < argc; i++) {
        //std::cout << "i = " << i << "\n";
        //std::cout << argv[i] << "\n";
        std::cout << getenv(argv[i]) << "\n";
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 10
17.05.2016, 18:05  [ТС] 9
argc < 4??
а это не массив указателей на строки содержащие переменные окружения ?
так зачем нам проверять его

Добавлено через 4 минуты
Не рабочий код выводит не то что надо
прекращение работы постоянное
вообщем не решение
но спасибо
0
13 / 13 / 9
Регистрация: 16.05.2016
Сообщений: 49
17.05.2016, 18:09 10
Лучший ответ Сообщение было отмечено FreeCplusplus как решение

Решение

FreeCplusplus, argc - количество аргументов, переданных программе через командную строку.
Цитата Сообщение от FreeCplusplus Посмотреть сообщение
найти и вывести переменные окружения передаваемые через командную строку. не менее 3.
argv - массив указателей на строки.

я извиняюсь, в коде выше проблема - он не проверяет, существует ли переменная окружения. у меня работает вот такая версия.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#define _CRT_SECURE_NO_WARNINGS
 
#include <iostream>
#include <cstdlib>
 
int main(int argc, char **argv)
{
    if (argc < 4) {
        std::cout << "too few arguments\n";
        exit(1);
    }
    
    char* e;
 
    for (int i = 1; i < argc; i++) {
        if (e = getenv(argv[i]))
            std::cout << e << "\n";
        else
            std::cout << "no such variable\n";
    }
 
    return 0;
}
0
0 / 0 / 0
Регистрация: 24.04.2016
Сообщений: 10
17.05.2016, 20:47  [ТС] 11
спасибо , работает вы лучший)
0
260 / 208 / 99
Регистрация: 13.12.2015
Сообщений: 1,098
17.05.2016, 21:05 12
C++
1
2
3
4
5
6
7
8
#include <cstdio>
#include <cstdlib>
 
int main (int argc, char *argv[]){
 
while(--argc > 0) printf("%s%s", getenv(*++argv), (argc > 1) ? " ": "");
 
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.05.2016, 21:05
Помогаю со студенческими работами здесь

Как передать строку из слов и пробелов через командную строку?
Я сделал запуск проги через командную строку. Теперь считываю параметры. Ничего сложного. Один...

Вход в систему с через командную строку или через консольное приложение
Можно ли как войти в систему Windows с помощью командной строки? Есть команда logoff для выхода, но...

Не открываются порты как через GUI, так и через командную строку
Привет, уважаемые форумчане, Сервер 12 не открывает порты как через GUI, так и через командную...

Запуск через командную строку
При запуске программы через командную строку возникает ошибка: Может быть, кто сталкивался

Запустить через командную строку
Нужно запустить программу free pascal через командную строку(КС). Программа выполняет чтение из...

Компиляция через командную строку
Как скомпилить проект через cmd или запустить qmake? Есть такие файлы проекта: my_project.pro...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru