Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.95
Nostalgia
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 19
#1

Переменная окружения PATH - C++

17.10.2010, 14:20. Просмотров 2664. Ответов 5
Метки нет (Все метки)

напишите пожалуйста как будет выглядеть прога которая дополняет значение PATH именем каталога, указанным в командной строке
Пишу на С.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2010, 14:20     Переменная окружения PATH
Посмотрите здесь:

переменная среды path. - C++
Привет, у меня такая проблема-нечайно стер данные в переменной среде path, теперь когда установил dev-c++ у меня вначале пишет что он не...

Вместо переменных окружения -> переменная из командной строки - C++
Короче ребята такое дело, надо переделать так что бы вместо переменных окружения надо что бы вместо переменных окружения программа...

Переменные окружения - C++
Помгите пожалуйста, надо настроить переменные окружения для Microsoft SDK. Кто что может скажите по этому поводу!!

получение окружения из psp - C++
Добрый день, насколько я знаю, что с помощью ассемблера я могу из psp получить служебную информацию о программе, но как это сделать с...

Добавить новую переменную окружения с помощью SetEnvironmentVariable - C++
Имеется консольное приложение в многобайтовой кодировке #include <windows.h> #include <iostream> using namespace std; int...

PATH - C++
Как в С++ добавить в PATH какуюнибудь папаку?

Вывести переменные окружения передаваемые через командную строку - C++
Всем привет дали такое задание: найти и вывести переменные окружения передаваемые через командную строку. не менее 3. не могу никак...

Не удалось найти в среде окружения сборки команду: make - C++
Qt Creator Не удалось найти в среде окружения сборки команду: make Возникла ошибка при сборке проекта Hello (цель: Настольный...

Как выводить переменные окружения и аргументы командной строки? - C++
Доброго времени суток) Может рассказать как выводить переменные окружения и аргументы командной строки? Задание звучит примерно так:...

PATH в string - C++
Собственно, вопрос, - как загнать данные с системного PATH в string? Надо получить такие же данные как при вводе set PATH в консоли.

PATH для MinGW - C++
Устоновил на днях компилятор mingw и msys, прописал path в переменные среды: пользовательский: C:\MinGW\bin системные переменные:...

Описать класс Path - C++
Описать класс Path, содержащий следующие поля: · Название начального пункта маршрута · Название конечного пункта маршрута...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
17.10.2010, 16:05     Переменная окружения PATH #2
Юзать putenv(), getenv()
Но программа не будет работать - изменение переменной откружения будет видно только в потомках
Но не будет в родителях данной программы
Nostalgia
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 19
17.10.2010, 21:44  [ТС]     Переменная окружения PATH #3
вопросы:
1.как осуществить копирование аргумента с командной строки в конец переменной окружения PATH.
мои предложения:
putenv(PATH=argc(NULL-1))
2.нужно ли как то обьявлять переменную окружения PATH ?
3.нужно ли обьявлять putenv и как.

Добавлено через 1 час 31 минуту
Цитата Сообщение от Nostalgia Посмотреть сообщение
вопросы:
1.как осуществить копирование аргумента с командной строки в конец переменной окружения PATH.
мои предложения:
putenv(PATH=argc(NULL-1))
2.нужно ли как то обьявлять переменную окружения PATH ?
3.нужно ли обьявлять putenv и как.
вот мой код
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>
extern char **environ;
int main (int argc, char* argv[])
 
{
char** var;
char** PATH;
putenv(PATH=argv[NULL-1]);
for (var=PATH; *var!=NULL; ++var)
printf ("%s\n",*var);
return 0;
}
в итоге я хочу получить значение переменной окружения PATH. в конец этого значения должен добавлятся аргумент (каталог), который я ввожу в командную строку. тоесть такое условие: если что то есть в командной строке то нужно его добавить в конец строки PATH(через двоеточие или как там, я новичек), а если в командной строке ничего - то соответственно ничего не добавляется.

вообщем что я вам ломаю голову.. задание звучит так:
Дополнить значение переменной окружения PATH путем(именем каталога), указанным в командной строке запуска программы. {исключить повторы}{обработать все аргументы аналогичным образом}
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.10.2010, 02:32     Переменная окружения PATH #4
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define _XOPEN_SOURCE
 
#include <stdio.h>
#include <stdlib.h>
 
#define ENVVARMAX  1000
 
int main(int argc, char *argv[])
{
    const char *path;
    char newpath[ENVVARMAX], *append;
    
    if (argc == 1)
        return 1;
 
    path = getenv("PATH");
    if (path == NULL)
        return 1;
    
    append = argv[1];
    
    (void) sprintf(newpath, "%s=%s%c%s", "PATH", path, ':', append);
    printf("%s" "\n", newpath);
    
    if (putenv(newpath) < 0)
        return 1;
    
    if ((path = getenv("PATH")) != NULL)
        printf("%s" "\n", path);
    
    return 0;    
}
Nostalgia
0 / 0 / 0
Регистрация: 06.03.2009
Сообщений: 19
22.10.2010, 00:14  [ТС]     Переменная окружения PATH #5
А данная программа проверяет на ошибки ?

Добавлено через 24 минуты
что делает первая строка мне вообще непонятно, без неё тоже работает, можно както без неё ?((
это тоже непонятно #define ENVVARMAX 1000 ((
и newpath[ENVVARMAX], *append;

можно коментарии пожалуйста ((
accept
4820 / 3240 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
22.10.2010, 04:13     Переменная окружения PATH #6
первая строка нужна для putenv, putenv не является стандартной функцией и без той строки её прототип не вставляется, а если прототип не вставляется, то получается неявное объявление вида extern int f();
неявные объявления ушли в прошлое, они оставлены только для того, чтобы старые программы не нужно было переписывать, если там такие объявления используются

Цитата Сообщение от Nostalgia
А данная программа проверяет на ошибки ?
проверяет

вот это, например, проверка "а не запущена ли программа без аргументов"
C
1
2
    if (argc == 1)
        return 1;
Цитата Сообщение от Nostalgia
это тоже непонятно #define ENVVARMAX 1000
это сделано специально, таким образом, определив константы вверху программы, мы можем их везде использовать и легко влиять на широту программы
с помощью одной этой строки мы можем задавать максимальную длину для пути (environment variable maximal)

C
1
char newpath[ENVVARMAX], *append;
перед компиляцией сначала ENVVARMAX заменится на соответствующее значение, вверху написано 1000 - значит на 1000
получится char newpath[1000] - символьный массив для строки из 999 символов + нуль-символ

это одно и то же
C
1
char newpath[ENVVARMAX], *append;
C
1
2
    char newpath[ENVVARMAX];
    char *append;
C
1
(void) sprintf
а знаешь что вот это такое ?
короче sprintf() возвращает значение типа int (ну, это целое число от -... до +...), так вот, чтобы показать, что мы это число не хотим использовать, мы его приводим к типу void с помощью операции приведения типа (новый_тип)
этим мы показали, что не забыли, что sprintf() может вернуть отрицательное значение

C89
Returns

The sprintf function returns the number of characters written in
the array, not counting the terminating null character.
C99
Returns
3
The sprintf function returns the number of characters written in the array, not
counting the terminating null character, or a negative value if an encoding error occurred.
Yandex
Объявления
22.10.2010, 04:13     Переменная окружения PATH
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru