Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.96
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
#1

strcmp - C++

01.09.2009, 21:06. Просмотров 4056. Ответов 17
Метки нет (Все метки)

Вот изучаю С++, тут столкнулся с простой проблеммой, функция strcmp,которая проверяет на равенство 2 строки между собою. Попробывал реализовать, но что-то она не хочет проверять.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <cstdio>
using namespace std;
 
int main()
{
char s1[80], s2[80];
setlocale(0,"");
strcpy(s1, "С++");
strcpy(s2," -это мощный язык");
 
cout<<"Длины строк: "<<strlen(s1)<<' '<<strlen(s2)<<endl;
 
if(!strcmp(s1,s2))
cout<<"Эти строки равны.";
else cout<<"Эти строки не равны";
 
 
 
cin.get();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 21:06     strcmp
Посмотрите здесь:

strcmp() - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace std; int main() { ...

STRCMP - C++
Как работает функция strcmp? strncmp? while(L&lt;R) { m=(L+R)/2; ...

strcmp - C++
Не могу понять, как правильно прировнять два слова. КОгда компилирую и ввожу слово, програма самостаятельно закрываеться, точне...

Strcmp - C++
Пользуюсь Visual Studio 2013. Читай книжку, выполняю примеры. Там есть пример с использованием strcmp и сказано подключить &lt;cstring&gt;. У...

strcmp - C++
slovo={'d','d','d'}; char *slovo2=new char; for(int i=0;i&lt;k;i++) { cin&gt;&gt;slovo2; } int s=strcmp(slovo2,slovo); и ввожу...

Функция strcmp - C++
Скажите пожалуйста,по какой причине,если указатель b- это символ &quot;P&quot;, функция strcmp может возвращать не 0? ...

функция strcmp - C++
какое бы не было nazv_otdela всегда пишет равны как лечить? void predpri9tie::zad() { cout&lt;&lt;&quot;vvedite nugniy otdel&quot;&lt;&lt;endl; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
01.09.2009, 21:12     strcmp #2
Golovastik, у меня все отлично работает....какой компилятор?
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 21:14  [ТС]     strcmp #3
Выдаёт - Эти строки не равны.
Кампилятор называется Visual Studio 2005
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,235
Завершенные тесты: 1
01.09.2009, 21:18     strcmp #4
Golovastik, а что должно еще выдовать?О_о
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 21:24  [ТС]     strcmp #5
Ошибочка: Изменив те 2 строки на эти:

C++
1
2
strcpy(s1, "С++");
strcpy(s2,"С++");
Не выдаёт, эти строки равны
Gravity
562 / 556 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 21:27     strcmp #6
'C' в обоих случаях латинская?
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 21:31     strcmp #7
Все работает
strcmp

Gravity, русские
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 21:39     strcmp #8
Цитата Сообщение от Gravity Посмотреть сообщение
'C' в обоих случаях латинская
а я не знаю какие у меня, но выдает что равны.
C++
1
2
strcpy(s1, "");
strcpy(s2, "");
Причем - длина строк 0 0.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
01.09.2009, 21:42     strcmp #9
А у меня выдаёт вот так,как у головастика.
Миниатюры
strcmp  
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 21:51  [ТС]     strcmp #10
Может в коде ошибка?

Добавлено через 2 минуты
Странно, а сейчас заработало,что за прикол.
Syltan
181 / 7 / 0
Регистрация: 27.08.2009
Сообщений: 868
01.09.2009, 21:53     strcmp #11
Если убрать восклицательный знак, будет выдавать что не равны, а почему так?
M128K145
Эксперт С++
8284 / 3503 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.09.2009, 22:04     strcmp #12
потому что в С++ ноль означает false. ! - отрицание, !0 - true. strcmp возвращает 0 когда строки равны. Вот потому там так и получается. Два варианта есть
C++
1
if(!strcmp(s1,s2))
и эквивалентный ему
C++
1
if(strcmp(s1, s2) == 0)
mirso
525 / 343 / 17
Регистрация: 05.04.2009
Сообщений: 709
01.09.2009, 22:04     strcmp #13
сравнивает s1 и s2;
при s1 < s2 ; < 0,
при s1 = s2 ; 0,
при s1 > s2; > 0
Golovastik
11 / 11 / 0
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 22:08  [ТС]     strcmp #14
Что интересно, выдает - Эти строки верны, только в случае,если одна строка с другой полностью одинаковые, например vova vova salat salat. Но если,количество символов одинаково ,а слова не одинаковы, тогда - Эти строки не верны, вот как.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.09.2009, 22:09     strcmp
Еще ссылки по теме:

Функция strcmp - C++
Имеется три числа num1, num2 и det. Как используя функцию strcmp определить принадлежит ли число det, промежутку num1, num2?

Баг strcmp - C++
Линк на архив с видео, где записана ошибка. http://upload.com.ua/get/902136351/Bug.zip Пароль: bug Объясните ситуацию.

strcmp не работает! - C++
Ниже изложенная функция должна проверять не выходит ли за данный диапазон введенное число. Загвоздка вот в чем: strcmp сравнивает строки...

Функция strcmp - C++
В каком файле посмотреть функцию strcmp? В string.h смотрел и там ничего не нашел. В string тоже нет. Точнее в string.h есть, но там...

[Visual C++]strcmp() - C++
Нужно слова, которые считываются в буфер stroka, отсортировать по алфавиту с пом. strcmp. Ошибка в том, что в условии if (strcmp(...


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

Или воспользуйтесь поиском по форуму:
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.09.2009, 22:09     strcmp #15
Цитата Сообщение от Golovastik Посмотреть сообщение
Что интересно, выдает - Эти строки верны, только в случае,если одна строка с другой полностью одинаковые
ну так ты же строки сравниваешь, а не их длину.
Yandex
Объявления
01.09.2009, 22:09     strcmp
Ответ Создать тему
Опции темы

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