LINUX.ORG.RU

[c++] Эмулятор консоли (проблема с обработкой команд)

 


0

0

Приветствую всех. Пишется консольный обработчик команд. Вот кусок кода:

int commands() { char command[512]; char host[48] = «kitero»; cout << name << «#» << host << ": "; cin.getline(command,512); // ввод команды if (command == «commands») cout << «list: echo quit commands run sysinfo \n»; // Несколько if'ов }

Почему когда я ввожу команду и жму энтер ничего не происходит? Ифы, похоже, не работают со строками... Можно ли это исправить?


Звиняйте, удалились пробелы

int commands() {
    char command[512];
    char host[48] = "kitero";
    cout << name << "#" << host << ": ";
    cin.getline(command,512);
    if (command == host)
            cout << "list: echo quit commands run sysinfo \n";
}

kainah
() автор топика
Ответ на: комментарий от kainah

Конечно, if (command == host) - это сравнивает не строки.
Юзай strcmp, например.

anonymous
()
Ответ на: комментарий от kainah

Сравниваешь не строки, а указатели, т.к. используешь си-строки.
std::string?

staseg ★★★★★
()

>Ифы, похоже, не работают со строками... Можно ли это исправить?

В Си нет строк. Для сравнения исрользуй strcmp.

anonymous
()
Ответ на: комментарий от anonymous

в с есть строки ... просто надо знать как с ними работать ...

anonymous
()
Ответ на: комментарий от kainah

return или exit по определенной команде, например.

anonymous
()
Ответ на: комментарий от kainah

> if (command == host)

А где тут сравнение строк? Вы сравниваете указатели. Используйте или std::string, или strcmp / strcasecmp.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.