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

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

Войти
Регистрация
Восстановить пароль
 
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
#1

strcmp - C++

24.05.2013, 21:29. Просмотров 492. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
slovo[3]={'d','d','d'};
char *slovo2=new char[k];
for(int i=0;i<k;i++)
{
cin>>slovo2[i];
}
int s=strcmp(slovo2,slovo);
и ввожу d,d,d;
почему в переменной s не 0??? в документации написано что она 0 должна возвр. при равных массивах. помогите!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 21:29
Здравствуйте! Я подобрал для вас темы с ответами на вопрос strcmp (C++):

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++
Вот изучаю С++, тут столкнулся с простой проблеммой, функция strcmp,которая проверяет на равенство 2 строки между собою. Попробывал...

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

8
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:32 #2
Цитата Сообщение от Miwa123 Посмотреть сообщение
slovo[3]={'d','d','d'};
Потому что нет нуль терминатора и читает память дальше
0
quwy
Native x86
3287 / 2133 / 579
Регистрация: 13.02.2013
Сообщений: 7,104
24.05.2013, 21:35 #3
Потому что strcmp сравнивает строки, а не массивы. Строка от массива отличается наличием в конце терминирующего символа \0, которого у вас нет. Поэтому после {d, d, d} она сравнивает весь тот мусор, который лежит в памяти за каждым из массивов, пока не наткнется на этот символ.
0
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 21:35  [ТС] #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Потому что нет нуль терминатора и читает память дальше
как его вставить. подскажи пожалуйста!
0
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:35 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <cstring>
using namespace std;
int main(){
    const int k=4;
    char slovo[k]="ddd";
    char *slovo2=new char[k];
    for(int i=0;i<k-1;i++){
        cin>>slovo2[i];
    }
    slovo2[k-1]='\0';
    int s=strcmp(slovo2,slovo);
    std::cout<<s<<std::endl;
}
1
quwy
Native x86
3287 / 2133 / 579
Регистрация: 13.02.2013
Сообщений: 7,104
24.05.2013, 21:37 #6
Croessmah,
C++
1
char slovo[k]="ddd\0";
?
1
Croessmah
Эксперт CЭксперт С++
13514 / 7673 / 867
Регистрация: 27.09.2012
Сообщений: 18,896
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:38 #7
quwy, "ddd" - 4 символа(нуль терминатор сам приписывается к строковым литералам)
2
quwy
Native x86
3287 / 2133 / 579
Регистрация: 13.02.2013
Сообщений: 7,104
24.05.2013, 21:40 #8
Croessmah, че-то я протупил, что массив у вас (как у ТС), а не строковой литерал. Пора отдыхать.
0
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 21:52  [ТС] #9
мужики спасибо. решил проблему
0
24.05.2013, 21:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 21:52
Привет! Вот еще темы с ответами:

функция 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;. ...


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

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

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