Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
#1

создать Меню или же Команды программы - C++

07.11.2009, 19:22. Просмотров 1266. Ответов 21
Метки нет (Все метки)

столкнулся с проблемой,у меня есть прога,хочу прикруть меню к ней,скажем есть ввести clear то сделать то что я скажу,но не получается вот код:
C++
1
2
3
4
5
 switch(cmd){
case "clear":{  hosts=fopen("C:\\Windows\\System32\\drivers\\etc\\hosts" , "w");
      fputs(str, hosts);
     cout<<"Файл hosts был вылечен.";
                 break;}
Добавлено через 31 секунду
Error 2 error C2051: case expression not constant c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 40 Hosts reader
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2009, 19:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос создать Меню или же Команды программы (C++):

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

не корректная работа меню или всей программы - C++
Народ помогите плиз, сделал меню к проге, но программа уходит в бесконечный цикл. #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Вызов команды терминала из программы - C++
Есть ли возможность (и если есть, то как реализовать) из программы вызвать в терминале выполнение какой-нибудь команды. Например: ffplay...

Создать папку, название которой является первым параметром команды - C++
Напишите приложение, создающее папку, название которой является первым параметром команды. Добавлено через 2 минуты Например команда...

Создать меню с командами Begin, Work, About. При выборе команды About открывается окно о разработчике - C#
Создать меню с командами Begin, Work, About. При выборе команды About открывается окно о разработчике. При выборе команды Begin открывается...

Создать меню для программы - Pascal ABC
меню.

21
Monte-Cristo
2793 / 1379 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.11.2009, 19:30 #2
у тебя cmd - Это строка, тобишь указатель на чар - char*\

В свич ты можешь символ (один), например, можешь запихнуть... Если строки: if-ами проверяй на совпадение через strcmp()
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
07.11.2009, 21:35  [ТС] #3
Monte-Cristo, я до этого не дотяну,лучше код авай
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
07.11.2009, 21:49 #4
Цитата Сообщение от МедведЪ Посмотреть сообщение
Monte-Cristo, я до этого не дотяну,лучше код авай
Я, конечно, не граф, но...

C++
1
2
3
4
5
6
if(!strcmp(cmd,"clear"))
{
  hosts=fopen("C:\\Windows\\System32\\drivers\\etc\\hosts" , "w");
      fputs(str, hosts);
         cout<<"Файл hosts был вылечен.";
                                 break;}
1
Monte-Cristo
2793 / 1379 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.11.2009, 21:53 #5
Можно так:
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
#include<iostream>
using namespace std;
 
int main ()
{
    char ch;
    
    cout << "Menu:" << endl;
    cout << "\t-> Start (s)" << endl;
    cout << "\t-> Clear (c)" << endl;
    cout << "\t-> Exit (e)" << endl;
    
    cout << "\nYour choice: ";
    ch = cin.get();
    
    switch(ch)
    {
        case 's':
                cout << "\nYour choice is 's'!";
            break;
            
        case 'c':
                cout << "\nYour choice is 'c'!";
            break;
            
        case 'e':
                cout << "\nYour choice is 'e'!";
            break;
            
    }
 
    return 0;
}


Добавлено через 3 минуты
А вот через комманды:
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
#include<iostream>
using namespace std;
 
int main ()
{
    char ch[10];
    
    cout << "command@line: ";
    cin.getline(ch, sizeof(char)*10);
    
    // command table
    if (!strcmp(ch,"clear"))
    {
        cout << "clear";
        // do clear command
    } else if (!strcmp(ch,"exit"))
    {
        cout << "exit";
        // do exit command
    
    } else if (!strcmp(ch,"start"))
    {
        cout << "start";
        // do start command    
    }
     
    return 0;
}
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
07.11.2009, 21:56  [ТС] #6
Цитата Сообщение от TanT Посмотреть сообщение
if(!strcmp(cmd,"clear"))
это поятно...но почему !?....и второе ты представил да,как меню рабо будет,ну что бы не один раз перешли и все,ну что постоянно было,скажем сделали КЛИР а потом еще другое...это не связано с темой,с циклами....хотя же сам понялв конце main() написать функции

Добавлено через 1 минуту
Можно так:
не не не,по буквам не нравится...а за команды тебе и ТанТ-у спасибо большое!
0
Monte-Cristo
2793 / 1379 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.11.2009, 21:57 #7
Цитата Сообщение от МедведЪ Посмотреть сообщение
это поятно...но почему !?
Потому что плохо знаешь ты Си... Если бы хорошо знал, то знал бы, что strcmp() возвращает разницу между строками. 0 - значит строки равны.
0
Monte-Cristo
2793 / 1379 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.11.2009, 22:01 #8
Насчет меню.. я когда-то делал курсовой по консольному программированию.. там у меня было меню. Финальную версию я где-то посеял да это и не важно.. а вот промежуточная есть - меню в ней исправно работает. Можешь посмотреть и разбираться.
1
Вложения
Тип файла: rar course.rar (2.9 Кб, 26 просмотров)
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
07.11.2009, 22:50  [ТС] #9
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Потому что плохо знаешь ты Си
знаю,вот и учусь

Добавлено через 2 минуты
а почему не так
C++
1
if(a=="clear")...
?
0
Monte-Cristo
2793 / 1379 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
07.11.2009, 22:58 #10
Цитата Сообщение от МедведЪ Посмотреть сообщение
знаю,вот и учусь
error: противоречие. Знания приходят после учебы.


Цитата Сообщение от МедведЪ Посмотреть сообщение
а почему не так
Потому что гладиолус (с) Кто-то там из КВН

Как можно сравнивать массивы? Вот если использовать класс std::string, в нем операция сравнения перегружена. И сравнивать можно.
1
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
07.11.2009, 23:00  [ТС] #11
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
error: противоречие. Знания приходят после учебы.
я хотел сказать что знаю что не знаю
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
08.11.2009, 18:04  [ТС] #12
у меня ошибки,кто нить помогите
код
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <windows.h>
#include <string.h>
#include <string>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream> 
#include<locale.h>
#include<stdio.h>
using namespace std;
 
 
int main()
{
  setlocale(LC_ALL, "Russian");
 
  char str[] = "# (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999\n#\n# Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows.\n#\n# Этот файл содержит сопоставления IP-адресов именам узлов.\n# Каждый элемент должен располагаться в отдельной строке. IP-адрес должен\n# находиться в первом столбце, за ним должно следовать соответствующее имя.\n# IP-адрес и имя узла должны разделяться хотя бы одним пробелом.\n#\n# Кроме того, в некоторых строках могут быть вставлены комментарии \n# (такие, как эта строка), они должны следовать за именем узла и отделяться\n# от него символом '#'.\n#\n# Например:\n#\n#      102.54.94.97     rhino.acme.com          # исходный сервер\n#       38.25.63.10     x.acme.com              # узел клиента x\n\n127.0.0.1       localhost";
  FILE* hosts = fopen("C:\\Windows\\System32\\drivers\\etc\\hosts" , "r");
 
 
 
  int ch;
  int strlenght = strlen(str);
  int n = 0;
 char cmd;
  while((ch = getc(hosts)) != EOF){
    if(n >= strlenght || (char)ch != str[n] ){
     
      
      fclose(hosts); // перед тем как заново открывать, нужно его закрыть
  printf("Hosts инфицирован!\n");
cin.getline(ch, sizeof(char)*10);
 
 
if(!strcmp(ch, "scan")){
  if(!hosts){
    printf("Не удалось открыть файл hosts\n");
    system("pause");
main();
 
    return 0;
  }
main();}
if(!strcmp(ch, "clear")){  hosts=fopen("C:\\Windows\\System32\\drivers\\etc\\hosts" , "w");
      fputs(str, hosts);
     cout<<"Файл hosts был вылечен.\n";
    fclose(hosts);
    system("pause");
main();
}
if(!strcmp(ch, "file"))     {
    cout<<"Содержание файла Hosts:\n";
    while(ch!=EOF){
    putc(ch, hosts);
    }
cout<<"\n";
system("pause");
main();
}
 
}
 
 
    
 
 
 
 
 
      ////////////////
      if(!hosts){ // Обязательно нужно проверять открылся ли файл
        printf("Не удалось открыть файл для записи");
 
        system("pause");
        return 0;
      }
 
 
 
      system("pause");
      fclose(hosts);
      return 0;
    }
 
    ++n;
  }
 
 printf("Hosts не инфицирован\n");
 
  fclose(hosts);
  
  system("pause");
  return 0;
}

ошибки
Error 6 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 88 Hosts reader
Error 10 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 90 Hosts reader
Error 12 error C4430: missing type specifier - int assumed. Note: C++ does not support default-int c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 92 Hosts reader
Error 3 error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 35 Hosts reader
Error 4 error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 44 Hosts reader
Error 5 error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 51 Hosts reader
Error 2 error C2664: 'std::basic_istream<_Elem,_Traits> &std::basic_istream<_Elem,_Traits>::getline(_Elem *,std::streamsize)' : cannot convert parameter 1 from 'int' to 'char *' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 32 Hosts reader
Error 14 error C2440: 'initializing' : cannot convert from 'const char [6]' to 'int' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 92 Hosts reader
Error 8 error C2440: 'initializing' : cannot convert from 'const char [22]' to 'int' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 88 Hosts reader
Error 13 error C2365: 'system' : redefinition; previous definition was 'function' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 92 Hosts reader
Error 7 error C2365: 'printf' : redefinition; previous definition was 'function' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 88 Hosts reader
Error 11 error C2365: 'fclose' : redefinition; previous definition was 'function' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 90 Hosts reader
Error 17 error C2143: syntax error : missing ';' before '}' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 94 Hosts reader
Error 9 error C2065: 'hosts' : undeclared identifier c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 90 Hosts reader
Error 15 error C2059: syntax error : 'return' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 93 Hosts reader
Error 16 error C2059: syntax error : '}' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 94 Hosts reader
Error 18 error C2059: syntax error : '}' c:\documents and settings\ag\my documents\visual studio 2008\projects\hosts reader\hosts reader\code.cpp 94 Hosts reader
0
RazorQ
581 / 348 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
08.11.2009, 18:34 #13
МедведЪ, ты какой язык до этого изучал? Нельзя рекурсивно вызывать main(). Если тебе надо, чтобы меню появлялось постоянно, то возьми его в цикл. Я бы написал отдельную функцию, которая возвращает номер выбранного пункта.
0
AnonymC
1173 / 455 / 28
Регистрация: 23.06.2009
Сообщений: 6,344
Завершенные тесты: 1
08.11.2009, 18:37  [ТС] #14
Цитата Сообщение от RazorQ Посмотреть сообщение
Я бы написал отдельную функцию, которая возвращает номер выбранного пункта.
хотя и так можно...если не трудно сделаешь?

Цитата Сообщение от RazorQ Посмотреть сообщение
Нельзя рекурсивно вызывать main().
почему?Оо

Добавлено через 20 секунд
Цитата Сообщение от RazorQ Посмотреть сообщение
ты какой язык до этого изучал
HTML
0
RazorQ
581 / 348 / 9
Регистрация: 06.02.2009
Сообщений: 1,386
08.11.2009, 18:39 #15
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int choose()
{
    char otvet[10] = "";
    cout << "Menu:" << endl;
    cout << "\t-> Start" << endl;
    cout << "\t-> Clear" << endl;
    cout << "\t-> Exit" << endl;
    cin >> otvet;
 
    if(!strcmp(otvet, "start"))
        return 1;
    if(!strcmp(otvet, "clear"))
        return 2;
    if(!strcmp(otvet, "exit"))
        return 3;
 
}
Добавлено через 40 секунд
Цитата Сообщение от МедведЪ Посмотреть сообщение
почему?Оо
язык не позволяет
0
08.11.2009, 18:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2009, 18:39
Привет! Вот еще темы с ответами:

Создать меню для программы - Pascal ABC
Помогите зделать меню для етой задачи) .Мне нужно два окна для ввода числа и вывода и кнопку для запуска опредиления цыфры) зарание...

Как создать меню, которое будет запускать внешние программы? - Pascal
Подскажите плз как создать менюшку которая будет запускать внешние програмки написанные на Паскаль ???? К примеру у меня есть код пяти...

Как создать не стандартный оконный интерфейс программы (боковое меню) - Visual Basic .NET
Всем Доброго Дня! Подскажите пожалуйста, как создать не стандартное окно в программе, а что то подобное: окно состоит из 2...

Пытаюсь создать Swipe или Slide меню из 5 картинок - C++ Qt
Пытаюcь создать на QT меню из 1 виджета в котором должны будут пролистываться 5 картинок и они же являются кнопками,...


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

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

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