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

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

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

strcmp - C++

01.09.2009, 21:06. Просмотров 4616. Ответов 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();
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.09.2009, 21:06
Здравствуйте! Я подобрал для вас темы с ответами на вопрос strcmp (C++):

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

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

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

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

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

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

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

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

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

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

Не работает strcmp - C++
Подскажите, пожалуйста, условие не срабатывает (14 строка), хотя должно visits++ делать. В строке tmp_month находится строка &quot;Sep&quot;. ...


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

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

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