Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 15:02   #1
securus
 
Регистрация: 28.08.2010
Сообщений: 5
По умолчанию Проблема сравнения строк

Меня многое смущало при работе со строками в c++, но я так или иначе с этим боролся. Но последняя проблема меня смущает до ужаса. Я не верю, что в c++ не может нормально работать сравнение строк.
Конкретная проблема:
Код:
...
chat temp[256];
do
{
scanf("%s",temp);
} while (temp!="no");
Пишем с клавиатуры no, но при этом temp!="no" Почему? Неужели мне придётся копировать часть строки до нулевого терминала? Заранее спасибо за ответы.
securus вне форума Ответить с цитированием
Старый 19.12.2010, 15:18   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему не хочешь работать с типом sring?
В твоем примере, насколько я помню, сравнивается не строка а массив, а в массиве помимо "no" может быть всякий мусор.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.12.2010, 15:27   #3
securus
 
Регистрация: 28.08.2010
Сообщений: 5
По умолчанию

Я просто читал обучение по C. И не знал, что в c++ есть такая полезная вещь. А в Дейтеле c++ ,как ни странно,тоже ничего такого(может плохо искал). Спасибо за подсказку.
securus вне форума Ответить с цитированием
Старый 19.12.2010, 15:43   #4
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

А щё так не сделать?
while (strcmp(temp, "no") != 0)
coNsept вне форума Ответить с цитированием
Старый 19.12.2010, 16:45   #5
securus
 
Регистрация: 28.08.2010
Сообщений: 5
По умолчанию

Я так уже пробовал- эффект тот же.
securus вне форума Ответить с цитированием
Старый 19.12.2010, 20:48   #6
coNsept
Форумчанин
 
Аватар для coNsept
 
Регистрация: 14.12.2009
Сообщений: 716
По умолчанию

while (strncmp(temp, "no", 2) != 0)
Не помню точно последовательность аргументов, но вроде так. (Вообщем попробуй так)
coNsept вне форума Ответить с цитированием
Старый 21.12.2010, 03:07   #7
securus
 
Регистрация: 28.08.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от coNsept Посмотреть сообщение
while (strncmp(temp, "no", 2) != 0)
Не помню точно последовательность аргументов, но вроде так. (Вообщем попробуй так)
Спасибо. Я думаю это самое подходящее решение (только если пользователь введёт "noo", то эта функция сыграет плохую службу, отрезав часть слова. Поэтому ещё придётся проверять общую длину введенной строки.

Последний раз редактировалось securus; 21.12.2010 в 03:17.
securus вне форума Ответить с цитированием
Старый 21.12.2010, 03:12   #8
UltimaBeaR
Форумчанин
 
Аватар для UltimaBeaR
 
Регистрация: 21.12.2010
Сообщений: 199
По умолчанию

В си и си++ строк вобще нету )

то что ты юзаешь это массив символов. Да есть в с++ std::string, я лично его и юзаю, но какбэ тоже не айс по большому счету

любые операции с символьными массивами нужно делат ьчерез функции аля strcmp а так ты просто сравниваешь указатель с другим указателем
UltimaBeaR вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с созданием или выводом строк ТриСемёрки Помощь студентам 2 13.05.2010 15:41
программа для сравнения строк ТМемо MixanMM Компоненты Delphi 2 02.07.2009 13:28
Createprocess проблема с типом строк Ky3Heu, Общие вопросы Delphi 2 08.04.2009 23:15
Проблема с счетом строк Волк Microsoft Office Excel 5 22.03.2009 12:12
проблема со списком строк Var17 Win Api 3 01.05.2008 08:58