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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
#1

Баг strcmp - C++

27.11.2010, 18:57. Просмотров 1608. Ответов 33
Метки нет (Все метки)

Линк на архив с видео, где записана ошибка.
http://upload.com.ua/get/902136351/Bug.zip
Пароль: bug
Объясните ситуацию.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2010, 18:57     Баг strcmp
Посмотрите здесь:

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

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

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

strcmp() - C++
#include "stdafx.h" #include <iostream> #include <cstdio> #include <cstring> using namespace std; int main() { ...

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2786 / 1600 / 145
Регистрация: 03.12.2007
Сообщений: 4,190
Завершенные тесты: 1
27.11.2010, 19:23     Баг strcmp #2
Неужели нельзя залить на файлообменник, где не надо ждать минуту со всякой рекламой?
X больше, чем O, возвращается любое положительное число, не обязательно единица. А там проверка на true.
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 19:29  [ТС]     Баг strcmp #3
Цитата Сообщение от Somebody Посмотреть сообщение
Неужели нельзя залить на файлообменник, где не надо ждать минуту со всякой рекламой?
X больше, чем O, возвращается любое положительное число, не обязательно единица. А там проверка на true.
на true та же ситуация
alex_x_x
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
27.11.2010, 19:34     Баг strcmp #4
alexsvk, за такую тему забанить мало
оформляйте тему нормально
CoolProgger
0 / 0 / 0
Регистрация: 27.11.2010
Сообщений: 5
27.11.2010, 19:43     Баг strcmp #5
запомните у стандартных функций нет багов
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
27.11.2010, 19:47     Баг strcmp #6
А ТС знает, что strcmp возвращает ноль, если две строки равны, т.е. значение, которое в остальных случаях интерпретируется как ложь?
Кстати, а что мешает выложить тот участок кода, где был замечен "баг", вместо того, чтобы мучаться с записью видео/выкладыванием его на файлообменник и заставлять мучаться других при его скачивании?

Не по теме:

А еще багов в стандартной библиотеке не заметил? А то интересно было бы послушать...

silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.11.2010, 19:58     Баг strcmp #7
Я заметил - log(-1) неправильно считает.

Добавлено через 1 минуту
И ещё sqrt(x) == x при x = 1 почему-то...
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
27.11.2010, 20:04     Баг strcmp #8
Цитата Сообщение от silent_1991 Посмотреть сообщение
Я заметил - log(-1) неправильно считает
да, беда-то какая А как должно быть правильно?
Цитата Сообщение от silent_1991 Посмотреть сообщение
И ещё sqrt(x) == x при x = 1 почему-то...
а у меня выводит единицу

Не по теме:

Кстати, asin(x) для |x|>1 только у меня не работает?

alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 20:12  [ТС]     Баг strcmp #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    char str[2] = "";
    char s [2];
 
    s [0] = who;
    s [1] = '\0';
 
    for(int i = 0; i < 30; i++)
    {
        for (int j = 0; j < 63; j++)
        {
            getCellValue(i,j,str);
 
            if (strcmp(str,s) == true)
            {
                setCellValue(i,j,(char*)s);
            }
        }
    }
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
27.11.2010, 20:15     Баг strcmp #10
alexsvk, а теперь скажи, какие значения аргументов у функции strcmp в момент "бага" и какой результат ты от нее ожидаешь (str равна s, str больше s, str меньше s)? Судя по твоему коду, setCellValue должно срабатывать, когда str больше, чем s. Я прав?
И да, какой смысл кастовать s к типу char*?
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 20:20  [ТС]     Баг strcmp #11
Цитата Сообщение от Nameless One Посмотреть сообщение
alexsvk, а теперь скажи, какие значения аргументов у функции strcmp в момент "бага" и какой результат ты от нее ожидаешь (str равна s, str больше s, str меньше s)?
И да, какой смысл кастовать s к типу char*?
Debug:
s[0] = 'X';
s [1] = 'O';

А смысл в том, что мне нужно SendMessage(...,WM_SETTEXT,...,...) реализовывать, где последний параметр типа const char*. who типа char.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
27.11.2010, 20:29     Баг strcmp #12
Цитата Сообщение от alexsvk Посмотреть сообщение
Debug:
s[0] = 'X';
s [1] = 'O';
а теперь вопрос на засыпку: сколько ты символов выделил для массива s? Два, правильно? А в твоем массиве где-нибудь есть символ '\0'? А с какими строками работает функция strcmp? Правильно, с теми, которые заканчиваются на '\0', т.е. с null-terminated strings. А ты передал в функцию strcmp просто массив символов, в котором нет символа '\0', т.е. признака конца строки, и после этого ожидаешь, что функция будет работать правильно?
Цитата Сообщение от alexsvk Посмотреть сообщение
А смысл в том, что мне нужно SendMessage(...,WM_SETTEXT,...,...) реализовывать, где последний параметр типа const char*. who типа char.
who может быть и типа char, но в функцию setCellValue ты передаешь не who, а s, у которой и так уже тип char*. Т.е. ты кастуешь переменную с типом char* к типу char*. Лично мне это кажется бессмысленным
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 20:37  [ТС]     Баг strcmp #13
Цитата Сообщение от Nameless One Посмотреть сообщение
а теперь вопрос на засыпку: сколько ты символов выделил для массива s? Два, правильно? А в твоем массиве где-нибудь есть символ '\0'? А с какими строками работает функция strcmp? Правильно, с теми, которые заканчиваются на '\0', т.е. с null-terminated strings. А ты передал в функцию strcmp просто массив символов, в котором нет символа '\0', т.е. признака конца строки, и после этого ожидаешь, что функция будет работать правильно?

who может быть и типа char, но в функцию setCellValue ты передаешь не who, а s, у которой и так уже тип char*. Т.е. ты кастуешь переменную с типом char* к типу char*. Лично мне это кажется бессмысленным

Не по теме:

Прошу прощения, что за бред.


Посмотрите ещё раз код, пожалуйста, там s[1] = '\0';
Да, и ещё. Если у Вас есть лучший вариант преобразования параметра с буквой к char*, то скажите как. Буду благодарен.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
27.11.2010, 20:41     Баг strcmp #14
Цитата Сообщение от alexsvk Посмотреть сообщение

Не по теме:

Прошу прощения, что за бред.


Посмотрите ещё раз код, пожалуйста, там s[1] = '\0';

Не по теме:

О да, бред...


Какая разница, какое значение s[1] имело при первичной инициализации? В интересующий нас момент какое значение у s[1] нам показывает отладчик? 'O', а 'O' != '\0'
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2010, 20:44     Баг strcmp
Еще ссылки по теме:

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

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

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

реализация strcmp - C++
помогите написать реализацию strcmp Функция должна принимать два указателя на сравниваемые строки (возможно Вы должны указать...


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

Или воспользуйтесь поиском по форуму:
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 20:44  [ТС]     Баг strcmp #15
Цитата Сообщение от Nameless One Посмотреть сообщение

Не по теме:

О да, бред...


Какая разница, какое значение s[1] имело при первичной инициализации? В интересующий нас момент какое значение у s[1] нам показывает отладчик? 'O', а 'O' != '\0'
тьфу.. прошу прощения, там s[0] = 'O'; - т.е. проблема остаётся
Yandex
Объявления
27.11.2010, 20:44     Баг strcmp
Ответ Создать тему
Опции темы

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