Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сравнение char с константой 
V
    Опции темы
artsb
Дата 12.10.2007, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Работаю в консоли. Вот кусок кода:

Код

...

char *cmd;
int ff;

...

cin>>cmd;

if (cmd=="exit") ff=1;
...


Запускаю программу, ввожу "exit", смотрю в cmd хранится "exit", но при проверке условия ff не становится равной <1>.
Наверное я неправильно сравниваю. Подскажите как сделать.
Спс.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 12.10.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



ты сравниваешь указатели, а не одержимое строк.
см. функцию strcmp
PM MAIL   Вверх
artsb
Дата 12.10.2007, 09:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Насколько я знаю strcmp сравнивает длину строки, а не то что там записано.
Поэтому strcmp не подходит.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 12.10.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  12.10.2007,  09:45 Найти цитируемый пост)
Насколько я знаю strcmp сравнивает длину строки, а не то что там записано.Поэтому strcmp не подходит.

слишком много ты знаешь для автора таких вопросов...
Хоть бы для приличия заглянул в доки прежде чем заявления делать.
PM MAIL   Вверх
zkv
Дата 12.10.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



Цитата(artsb @  12.10.2007,  09:18 Найти цитируемый пост)
char *cmd;
int ff;
...
cin>>cmd;

а память под cmd выделил перед чтением?
PM MAIL   Вверх
artsb
Дата 12.10.2007, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Fazil6,  всё получилось с использованием strcmp, НО в книге написано:

--------------------------------------------------------------------------------------------------------
int a=strcmp(str1,str2); - идёт сравнение строк str1 и str2. Функция возвращает отрицательное значение, если первая строка меньше второй; положительное значение, если первая строка больше второй; и значение 0, если строки равны.
--------------------------------------------------------------------------------------------------------

объясни тогда, что значит - "если первая строка меньше" и "если первая строка больше".




zkv,  память не выделял. В указанном тобой отрывке, вместо трёх точек стоит печать вопроса.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Anikmar
Дата 12.10.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(artsb @  12.10.2007,  18:43 Найти цитируемый пост)
объясни тогда, что значит - "если первая строка меньше" и "если первая строка больше".

См. сравнение строк. Алфавит. и т.п.


Цитата(artsb @  12.10.2007,  18:43 Найти цитируемый пост)

zkv,  память не выделял. В указанном тобой отрывке, вместо трёх точек стоит печать вопроса

См. любуб книгу по Си.


PM MAIL ICQ   Вверх
Fazil6
Дата 12.10.2007, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  12.10.2007,  18:43 Найти цитируемый пост)
int a=strcmp(str1,str2); - идёт сравнение строк str1 и str2

наверняка там написано
Цитата

.... идет лексикографическое сравнение строк str1...

иначе, найди другую книгу
Код

         const char *c1 = "aaaa";
    const char *c2 = "aab";
         // здесь с1 меньше с2 потому как 3-й символ у с2 больше


PM MAIL   Вверх
artsb
Дата 12.10.2007, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Fazil6,  я дал выдержку слово в слово. Я не виноват, что так написано. Книга C++ трюки и эффекты (издательство Питер, стр. 43).

Ну если, например, сравнивать строки "show" и "exit", что будут результатом сравнения?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
zkv
Дата 12.10.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 92



Цитата(artsb @  12.10.2007,  21:38 Найти цитируемый пост)
Ну если, например, сравнивать строки "show" и "exit", что будут результатом сравнения

Цитата(artsb @  12.10.2007,  18:43 Найти цитируемый пост)
положительное значение, если первая строка больше второй

те положительное значение, так как "show" больше чем "exit", так как 's' больше чем 'e', если бы первые буквы одинаковые были, то проверялась бы вторая, и так далее, до конца слова.
PM MAIL   Вверх
Anikmar
Дата 13.10.2007, 08:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(artsb @  12.10.2007,  21:38 Найти цитируемый пост)
Fazil6,  я дал выдержку слово в слово. Я не виноват, что так написано. Книга C++ трюки и эффекты (издательство Питер, стр. 43).


Что такое ликсикограыическое сравнение

Добавлено через 53 секунды
Простите за очепятки
PM MAIL ICQ   Вверх
artsb
Дата 13.10.2007, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Спасибо всем. Разобрался.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.