С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1

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

05.09.2016, 09:20. Показов 2192. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Хочу проверить изменялось ли имя 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);
    }
...
}
В командной строке пишет, как будто условие выполнилось, хотя имя файла писал такое же ! Не пойму в чём ошибка! Подскажите пожалуйста.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.09.2016, 09:20
Ответы с готовыми решениями:

Работа с командной строкой
Как записать файл в командную срока и оттуда считывать этот файл?

Работа с командной строкой...
Помогите использовать возможности командной строки в с++. Задание такое- ввести 200 случайных чисел, записать их в текстовый файл, и этот...

Работа с командной строкой
Нужно встроить в программу код для перекодировки звукового файла из wav во flac. Для этого взял CUETools. Я не знаю как вызывать консольное...

13
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
05.09.2016, 09:24
У вас в передаваемом параметре лежит ведь не имя файла, а полный путь до него. Вам необходимо взять лишь часть строки из argv[0], а именно ту, что идет после последнего знака '\' и сравнивать ее с валидным названием файла.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
05.09.2016, 09:27  [ТС]
Nishen, Странно, я просто читал, что если запускать через командную строку, из папки где лежит .exe, то можно без полного пути, только имя файла, или имя файла с расширением exe ввести, тогда в p[0] будет такое имя. Я не прав?
0
 Аватар для Nishen
1357 / 856 / 365
Регистрация: 26.02.2015
Сообщений: 3,814
05.09.2016, 09:39
Non_stop, да, проверил, Вы правы.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
05.09.2016, 09:53  [ТС]
Nishen, Получилось? Я вот всё от теории к практике перейти не могу не получается... Можете подробно описать пожалуйста какие вы действия писало в командной строке? Я то я как не пишу, всё время условие выполняется, как будто имя файла поменял. А в чём ошибка так понять и не могу. Может Вы подскажите?
0
Заблокирован
05.09.2016, 10:05
Non_stop, а почему ты просто не посмотришь, что у тебя лежит в argv[0] в отладчике? Это ведь так просто и быстро - самому найти ответ
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
05.09.2016, 10:08  [ТС]
nimazzzy, Я смотрел , там лежит полный путь к файлу.

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

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

Добавлено через 31 секунду
А что с выполнением домашнего задания?
Цитата Сообщение от nimazzzy Посмотреть сообщение
Почитай в интернете про такие понятия как относительный и полный пути. Потом попробуй запускать и так, и так. И в коде допиши printf на argv[0], чтобы видеть, что изменилось.
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
05.09.2016, 12:23  [ТС]
nimazzzy,
Цитата Сообщение от nimazzzy Посмотреть сообщение
А что с выполнением домашнего задания?
Сообщение от nimazzzy
Почитай в интернете про такие понятия как относительный и полный пути. Потом попробуй запускать и так, и так. И в коде допиши printf на argv[0], чтобы видеть, что изменилось.
Про пути толкого не нашёл. Выводил argv[0], он писал полный путь файла.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
05.09.2016, 12:30
Цитата Сообщение от Non_stop Посмотреть сообщение
а можно поподробнее
Здесь почитай (только имя файла, вторым параметром не вводи, это для другого задания):
Как передать аргументы из командной строки в функцию main(), что программа заработала? (файловый ввод/вывод)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.09.2016, 12:30
Помогаю со студенческими работами здесь

Работа с командной строкой
Здравствуйте! Не подскажите как можно работать с командной строкой в си++? Я имею ввиду через компилятор передавать команды в командную...

Работа с командной строкой Windows
Здравствуйте, форумчане. У меня появилась проблема. Нужно считать файл и вывести на экран. С этим проблем нету, всё работает. Но...

Работа с двоичными файлами и командной строкой
Помогите, пожалуйста! Не нашла похожей задачи здесь, поэтому создаю новую тему. Нужно готовое решение, сроки горят. Учусь не на...

Точки и работа с командной строкой windows
В общем, нужно создать прогу которая будет читать введенные пользователем числа, а потом работать с ними в командной строке винды. ...

Работа с командной строкой. Отрытие вызываемых файлов
Добрый вечер форумчане. Составлена программа с аргументами командной строки. Hello, word C:\WINDOWS\system32\notepad.exe...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru