11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
1

strcmp

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

Author24 — интернет-сервис помощи студентам
Вот изучаю С++, тут столкнулся с простой проблеммой, функция 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.09.2009, 21:06
Ответы с готовыми решениями:

Strcmp
Пользуюсь Visual Studio 2013. Читай книжку, выполняю примеры. Там есть пример с использованием...

strcmp
slovo={'d','d','d'}; char *slovo2=new char; for(int i=0;i&lt;k;i++) { cin&gt;&gt;slovo2; } int...

strcmp()
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;cstring&gt; using namespace...

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

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

C++
1
2
strcpy(s1, "С++");
strcpy(s2,"С++");
Не выдаёт, эти строки равны
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 21:27 6
'C' в обоих случаях латинская?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
01.09.2009, 21:31 7
Все работает
strcmp


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

Добавлено через 2 минуты
Странно, а сейчас заработало,что за прикол.
0
241 / 9 / 7
Регистрация: 27.08.2009
Сообщений: 868
01.09.2009, 21:53 11
Если убрать восклицательный знак, будет выдавать что не равны, а почему так?
0
Эксперт JavaЭксперт С++
8384 / 3616 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
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
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
01.09.2009, 22:04 13
сравнивает s1 и s2;
при s1 < s2 ; < 0,
при s1 = s2 ; 0,
при s1 > s2; > 0
1
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 22:08  [ТС] 14
Что интересно, выдает - Эти строки верны, только в случае,если одна строка с другой полностью одинаковые, например vova vova salat salat. Но если,количество символов одинаково ,а слова не одинаковы, тогда - Эти строки не верны, вот как.
0
2816 / 1407 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
01.09.2009, 22:09 15
Цитата Сообщение от Golovastik Посмотреть сообщение
Что интересно, выдает - Эти строки верны, только в случае,если одна строка с другой полностью одинаковые
ну так ты же строки сравниваешь, а не их длину.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12453 / 7478 / 1752
Регистрация: 25.07.2009
Сообщений: 13,748
01.09.2009, 22:13 16
Цитата Сообщение от Golovastik Посмотреть сообщение
Вот изучаю С++, тут столкнулся с простой проблеммой, функция strcmp,которая проверяет на равенство 2 строки между собою. Попробывал реализовать, но что-то она не хочет проверять.

C++
1
2
3
4
5
#include <iostream>
#include <cstdio>
using namespace std;
...
}
Вообще-то strcmp в string.h объявлена. Нужно что-то типа #include <cstring> в начале написать.
1
11 / 11 / 2
Регистрация: 25.05.2009
Сообщений: 435
01.09.2009, 22:31  [ТС] 17
Вроде разобрался,всем спасибо.
0
577 / 571 / 65
Регистрация: 29.01.2009
Сообщений: 1,274
01.09.2009, 22:33 18
Цитата Сообщение от Golovastik Посмотреть сообщение
if(strcmp(s1,s2) == 0) cout<<"Не равны строчки";
А пост mirso выше читал? Если равно, то 0 и будет, а у тебя все наоборот.
0
01.09.2009, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.09.2009, 22:33
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru