Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
1

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

21.10.2014, 09:26. Просмотров 2766. Ответов 20
Метки нет (Все метки)

Всем привет! Есть такая программка которая запускается через командную строку с параметром, например :

C:\папка\spectr.exe /А

При таком запуске программа запустится с каким то установленным параметром. При /B будет установлен другой параметр, при /C - третий и так далее. Но, есть необходимость вывести в консоль командной строки текст с описанием этих самых команд. Например:

C:\папка\spectr.exe /?

/A - установка того то
/B - установка параметра того то
/C - установка того то параметра
и так далее.

Как это можно сделать? Поделитесь опытом, товарищи!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2014, 09:26
Ответы с готовыми решениями:

Не открывается файл при запуске через командную строку
Написал небольшую игру (скорее прототип игры). Игра загружает список уровней с файла "levels.txt",...

Ошибка при запуске приложения через командную строку
подскажите, пожалуйста, в чем ошибка(почему не открывает файл)?

Не работает программа при запуске в Windows через командную строку
Дали задание скомпилить cmake под Linux. Там все получилось. Как доп.задание дали перенести и...

Ошибка при запуске через командную строку
Когда компилирую через IntelJ Idea всё норм. Если пытаюсь запустить через командную строку ошибка...

20
LEQADA
Мастер кустарных методов
229 / 224 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 09:32 2
МихаилХ, таким же образом. Покажите код условий на параметры.
0
zss
Модератор
Эксперт С++
9274 / 8007 / 4915
Регистрация: 18.12.2011
Сообщений: 21,348
Завершенные тесты: 1
21.10.2014, 09:33 3
C++
1
2
3
4
5
6
7
8
9
char str[100];
cin.getline(str,100);
if(str[strlen(str)-1]=='?') // последний в строке знак вопроса
{
     cout<<"/A - установка того то"<<endl;
     cout<<"/B - установка того то"<<endl;
     cout<<"/C - установка того то"<<endl;
}else
    system(str);
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 10:03  [ТС] 4
Вот как пробовал я:
C++
1
2
3
4
5
6
7
8
if (temp2 == L"/?")
{
    CString temp2 = L"/K - кепстр\n/S - спектрограмма\n/D - 3d - спектрограмма\n/P - проходная\n";
    wprintf(L"%s\n", temp2.GetString());
    char s[10] = "ACHTUNG!";
    printf("%s\n", s);
    std::cout << "ACHTUNG!\n" << std::endl;
}
Ни один из способов результата не дал.
У меня mfc-шное приложение и, может по этому не получается вывести текст в консоль.
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 10:08 5
А что мешает проверить равенство параметра твоему "/?" и вывести что тебе надо?
0
LEQADA
Мастер кустарных методов
229 / 224 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 10:08 6
МихаилХ, вам подсказали уже. Не получается так?
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 10:09 7
zss, этот человек тебе уже привел пример)))
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 11:41  [ТС] 8
Нет этот пример не работает у меня. Я привел код своих попыток которые я предпринимал до того как обратился на форум.
0
LEQADA
Мастер кустарных методов
229 / 224 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 11:45 9
МихаилХ, покажите рабочий код того, как написали проверку для параметра /A.

Добавлено через 2 минуты
И да, опубликовали бы вы тему в разделе Visual C++...
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 12:16  [ТС] 10
Здесь код обработки команд. Команд не много. При той или иной команде устанавливаются нужные параметры в структуре параметров.
str - выпиленные из командной строки команды, записанные через точку с запятой.
nArg - количество команд.
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
33
34
35
36
37
38
39
    int count = 1;
    CString temp1, temp2;
    temp1 = str;
    while (true)
    {
        temp2 = temp1.Left( temp1.Find(L";"));
        temp1.Delete(0, temp1.Find(L";") + 1);
        if (temp2 == L"/D")
        {
            m_sParamNew.showParams.tdGrammaStart = 1;
            m_sParamNew.showParams.showTDGrammaWindow = 1;
        }
        if (temp2 == L"/S")
        {
            m_sParamNew.showParams.grammaStart = 1;
            m_sParamNew.showParams.showGrammaWindow = 1;
        }
        if (temp2 == L"/K")
        {
            m_sParamNew.showParams.kepstrStart = 1;
            m_sParamNew.showParams.showKepstrWindow = 1;
        }
        if (temp2 == L"/P")
        {
            m_sParamNew.showParams.prohStart = 1;
            m_sParamNew.showParams.showProhodWindow = 1;
        }
        if (temp2 == L"/?")
        {
            temp2 = L"/K - кепстр/S - спектрограмма/D - 3d - спектрограмма/P - проходная";
            wprintf(L"%s\n", temp2.GetString());
            char s[10] = "ACHTUNG!";
            printf("%s", s);
            std::cout << "ACHTUNG!" << std::endl;
            exit(0);
        }
        if (count >= nArg) break;
        count++;
    }
0
zss
Модератор
Эксперт С++
9274 / 8007 / 4915
Регистрация: 18.12.2011
Сообщений: 21,348
Завершенные тесты: 1
21.10.2014, 13:03 11
Цитата Сообщение от МихаилХ Посмотреть сообщение
char s[10] = "ACHTUNG!";
printf("%s", s);
std::cout << "ACHTUNG!" << std::endl;
Зачем выводить ACHTUNG! Сначала средствами Си, а потом потоковым выводом на cout?
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 13:18 12
А что показывает дебаг?
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 13:37  [ТС] 13
Потому что я использовал все что помнил для вывода текста в консоль. Вот только не один из них не сработал.

А что Дебаг должен был показать? В блок if заходит.
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 13:41 14
МихаилХ, посмотри дебагом что у тебя получается в temp2
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 13:48  [ТС] 15
Цитата Сообщение от Kverter Посмотреть сообщение
посмотри дебагом что у тебя получается в temp2
Посмотрел: собственно записанная мной строка там и лежит. А в чем конкретно сомнения?
0
Kastaneda
Jesus loves me
Эксперт С++
5061 / 3079 / 351
Регистрация: 12.12.2009
Сообщений: 7,789
Записей в блоге: 2
Завершенные тесты: 1
21.10.2014, 13:54 16
Странно, что MS еще аналог getopt() не написали (хотя 100% написали, только почему-то в WinAPI не включили).
Если mingw используешь, посмотри на getopt() и getopt_long(). Правда ключи придется передавать через '-', а не через '/'
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 14:17 17
МихаилХ, то есть у тебя в temp2 хранится "/?"
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 14:37  [ТС] 18
Цитата Сообщение от Kverter Посмотреть сообщение
то есть у тебя в temp2 хранится "/?"
Не после в хода в блок if в temp2 лежит
"/K - кепстр/S - спектрограмма/D - 3d - спектрограмма/P - проходная"
0
Kverter
36 / 36 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 15:05 19
МихаилХ, а ахтунг то выводится?

Добавлено через 11 минут
МихаилХ, я не знаю что такое случилась там, но у меня
C++
1
wprintf(L"%s\n", temp2.GetString());
это работает
0
МихаилХ
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
21.10.2014, 15:29  [ТС] 20
Цитата Сообщение от Kverter Посмотреть сообщение
это работает
Да в том то и дело что у меня ничего не выводится.
А вы из какого места программы делаете вывод?
Просто я делаю вывод в командную строку делаю из функции OnInitDialog().
Может я из того места вывожу?
0
21.10.2014, 15:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2014, 15:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Написание текста в обратном порядке через командную строку
Помогите написать прогу которая после ввода текста пишет его в обратном порядке.До завтра нужно...

Запуск программы через командную строку
Проблема в следующем! Например написана программка сложения двух чисел, после её запуска в КС и...

Добавление при запуске ссылки на рекламный сайт в командную строку
Добрый день. При запуске Google Chrome постоянно открывает &quot;izogreb.ru&quot;. Ярлыки чистые, открывается...

Как убрать командную строку при запуске Windows Forms?
В процессе написания программы на Visual C++ в какой-то момент произошло так, что перед открытием...


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

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

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