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

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

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

strcmp - C++

24.05.2013, 21:29. Просмотров 462. Ответов 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 должна возвр. при равных массивах. помогите!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2013, 21:29     strcmp
Посмотрите здесь:

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:32     strcmp #2
Цитата Сообщение от Miwa123 Посмотреть сообщение
slovo[3]={'d','d','d'};
Потому что нет нуль терминатора и читает память дальше
quwy
Native x86
3085 / 1933 / 511
Регистрация: 13.02.2013
Сообщений: 6,440
24.05.2013, 21:35     strcmp #3
Потому что strcmp сравнивает строки, а не массивы. Строка от массива отличается наличием в конце терминирующего символа \0, которого у вас нет. Поэтому после {d, d, d} она сравнивает весь тот мусор, который лежит в памяти за каждым из массивов, пока не наткнется на этот символ.
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 21:35  [ТС]     strcmp #4
Цитата Сообщение от Croessmah Посмотреть сообщение
Потому что нет нуль терминатора и читает память дальше
как его вставить. подскажи пожалуйста!
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:35     strcmp #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;
}
quwy
Native x86
3085 / 1933 / 511
Регистрация: 13.02.2013
Сообщений: 6,440
24.05.2013, 21:37     strcmp #6
Croessmah,
C++
1
char slovo[k]="ddd\0";
?
Croessmah
Модератор
Эксперт CЭксперт С++
12979 / 7291 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
24.05.2013, 21:38     strcmp #7
quwy, "ddd" - 4 символа(нуль терминатор сам приписывается к строковым литералам)
quwy
Native x86
3085 / 1933 / 511
Регистрация: 13.02.2013
Сообщений: 6,440
24.05.2013, 21:40     strcmp #8
Croessmah, че-то я протупил, что массив у вас (как у ТС), а не строковой литерал. Пора отдыхать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.05.2013, 21:52     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 есть, но там...


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

Или воспользуйтесь поиском по форуму:
Miwa123
37 / 37 / 1
Регистрация: 16.04.2013
Сообщений: 317
Записей в блоге: 1
24.05.2013, 21:52  [ТС]     strcmp #9
мужики спасибо. решил проблему
Yandex
Объявления
24.05.2013, 21:52     strcmp
Ответ Создать тему
Опции темы

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