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

Работа с командной строкой - C++

Восстановить пароль Регистрация
 
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 09:20     Работа с командной строкой #1
Здравствуйте. Хочу проверить изменялось ли имя exeшного файла .запускаю из командной строки и прописываю весь путь

"С:\Users\Вадим\Docunents\Visual Studio 2012\1\Debug\1.exe"

При этом код проверки выглядит вот так:

C++
1
2
3
4
5
6
7
8
9
int main(int argc,  char *argv[])
{
if(strcmp(argv[0],"1.exe")!=0)
    {
        cout<<"Зарегестрирована попытка смена имени программы. Дальнейшёё её использование невозможно"<<endl;
        exit(1);
    }
...
}
В командной строке пишет, как будто условие выполнилось, хотя имя файла писал такое же ! Не пойму в чём ошибка! Подскажите пожалуйста.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nishen
 Аватар для Nishen
183 / 89 / 35
Регистрация: 26.02.2015
Сообщений: 495
05.09.2016, 09:24     Работа с командной строкой #2
У вас в передаваемом параметре лежит ведь не имя файла, а полный путь до него. Вам необходимо взять лишь часть строки из argv[0], а именно ту, что идет после последнего знака '\' и сравнивать ее с валидным названием файла.
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 09:27  [ТС]     Работа с командной строкой #3
Nishen, Странно, я просто читал, что если запускать через командную строку, из папки где лежит .exe, то можно без полного пути, только имя файла, или имя файла с расширением exe ввести, тогда в p[0] будет такое имя. Я не прав?
Nishen
 Аватар для Nishen
183 / 89 / 35
Регистрация: 26.02.2015
Сообщений: 495
05.09.2016, 09:39     Работа с командной строкой #4
Non_stop, да, проверил, Вы правы.
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 09:53  [ТС]     Работа с командной строкой #5
Nishen, Получилось? Я вот всё от теории к практике перейти не могу не получается... Можете подробно описать пожалуйста какие вы действия писало в командной строке? Я то я как не пишу, всё время условие выполняется, как будто имя файла поменял. А в чём ошибка так понять и не могу. Может Вы подскажите?
nimazzzy
 Аватар для nimazzzy
370 / 326 / 92
Регистрация: 29.03.2016
Сообщений: 1,077
Завершенные тесты: 1
05.09.2016, 10:05     Работа с командной строкой #6
Non_stop, а почему ты просто не посмотришь, что у тебя лежит в argv[0] в отладчике? Это ведь так просто и быстро - самому найти ответ
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 10:08  [ТС]     Работа с командной строкой #7
nimazzzy, Я смотрел , там лежит полный путь к файлу.

Добавлено через 39 секунд
А написано, что если делать через командную строку, то достаточно ограничиться названием самого exeшного файла
nimazzzy
 Аватар для nimazzzy
370 / 326 / 92
Регистрация: 29.03.2016
Сообщений: 1,077
Завершенные тесты: 1
05.09.2016, 10:19     Работа с командной строкой #8
Цитата Сообщение от Non_stop Посмотреть сообщение
Я смотрел , там лежит полный путь к файлу.
Тогда я не понимаю, чему ты удивляешься
Цитата Сообщение от Non_stop Посмотреть сообщение
А написано, что если делать через командную строку, то достаточно ограничиться названием самого exeшного файла
Это не зависит от того через командную строку, или нет. Это зависит от того, как ты запускаешь приложение через командную строку: по полному пути, или нет. Тебе нужно не учитывать путь к файлу при сравнении. По сути отступать с конца argv[0] длину оригинального имени файла, это будет начальный символ откуда хотя бы можно сравнивать. И не забывай учитывать, что оригинальное имя может быть длиннее нового, чтобы за начало argv[0] не уползти.
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 10:26  [ТС]     Работа с командной строкой #9
Цитата Сообщение от nimazzzy Посмотреть сообщение
Это зависит от того, как ты запускаешь приложение через командную строку: по полному пути, или нет.
Ой, а можно поподробнее, а то я , если честно в это деле дилетант. Код, где я сравниваю приведён выше, фалй наз-ся 1.exe. А можно не по полному пути сравнивать? Я если честно беру exeшный файл и просто переношу его в команд. строку...
nimazzzy
 Аватар для nimazzzy
370 / 326 / 92
Регистрация: 29.03.2016
Сообщений: 1,077
Завершенные тесты: 1
05.09.2016, 11:24     Работа с командной строкой #10
Почитай в интернете про такие понятия как относительный и полный пути. Потом попробуй запускать и так, и так. И в коде допиши printf на argv[0], чтобы видеть, что изменилось. И сразу станет все понятно
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 11:59  [ТС]     Работа с командной строкой #11
nimazzzy, Если честно, прочитав, намного понятней не стало. ПОдскажите синтаксис передачи аргумента допустим я должен ввести имя текстового файла, то как это сделать в команд строке?
nimazzzy
 Аватар для nimazzzy
370 / 326 / 92
Регистрация: 29.03.2016
Сообщений: 1,077
Завершенные тесты: 1
05.09.2016, 12:02     Работа с командной строкой #12
1.exe текстовый_файл.txt

Добавлено через 10 секунд
Цитата Сообщение от Non_stop Посмотреть сообщение
прочитав, намного понятней не стало
Хреново.

Добавлено через 31 секунду
А что с выполнением домашнего задания?
Цитата Сообщение от nimazzzy Посмотреть сообщение
Почитай в интернете про такие понятия как относительный и полный пути. Потом попробуй запускать и так, и так. И в коде допиши printf на argv[0], чтобы видеть, что изменилось.
Non_stop
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 185
Записей в блоге: 1
05.09.2016, 12:23  [ТС]     Работа с командной строкой #13
nimazzzy,
Цитата Сообщение от nimazzzy Посмотреть сообщение
А что с выполнением домашнего задания?
Сообщение от nimazzzy
Почитай в интернете про такие понятия как относительный и полный пути. Потом попробуй запускать и так, и так. И в коде допиши printf на argv[0], чтобы видеть, что изменилось.
Про пути толкого не нашёл. Выводил argv[0], он писал полный путь файла.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.09.2016, 12:30     Работа с командной строкой
Еще ссылки по теме:

C++ Работа с командной строкой
C++ Работа с двоичными файлами и командной строкой
Работа с командной строкой Windows C++

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

Или воспользуйтесь поиском по форуму:
nd2
1064 / 803 / 270
Регистрация: 29.01.2016
Сообщений: 2,506
05.09.2016, 12:30     Работа с командной строкой #14
Цитата Сообщение от Non_stop Посмотреть сообщение
а можно поподробнее
Здесь почитай (только имя файла, вторым параметром не вводи, это для другого задания):
Как передать аргументы из командной строки в функцию main(), что программа заработала? (файловый ввод/вывод)
Yandex
Объявления
05.09.2016, 12:30     Работа с командной строкой
Ответ Создать тему
Опции темы

Текущее время: 13:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru