Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 26.09.2013
Сообщений: 74
1

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

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

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

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

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

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

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

Как это можно сделать? Поделитесь опытом, товарищи!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.10.2014, 09:26
Ответы с готовыми решениями:

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

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

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

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

20
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 09:32 2
МихаилХ, таким же образом. Покажите код условий на параметры.
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
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
37 / 37 / 25
Регистрация: 30.10.2013
Сообщений: 211
21.10.2014, 10:08 5
А что мешает проверить равенство параметра твоему "/?" и вывести что тебе надо?
0
Мастер кустарных методов
232 / 227 / 17
Регистрация: 09.11.2010
Сообщений: 680
21.10.2014, 10:08 6
МихаилХ, вам подсказали уже. Не получается так?
0
37 / 37 / 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
Мастер кустарных методов
232 / 227 / 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
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
21.10.2014, 13:03 11
Цитата Сообщение от МихаилХ Посмотреть сообщение
char s[10] = "ACHTUNG!";
printf("%s", s);
std::cout << "ACHTUNG!" << std::endl;
Зачем выводить ACHTUNG! Сначала средствами Си, а потом потоковым выводом на cout?
0
37 / 37 / 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
37 / 37 / 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
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,116
Записей в блоге: 2
21.10.2014, 13:54 16
Странно, что MS еще аналог getopt() не написали (хотя 100% написали, только почему-то в WinAPI не включили).
Если mingw используешь, посмотри на getopt() и getopt_long(). Правда ключи придется передавать через '-', а не через '/'
0
37 / 37 / 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
37 / 37 / 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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.10.2014, 15:29
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru