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

Баг strcmp - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
27.11.2010, 18:57     Баг strcmp #1
Линк на архив с видео, где записана ошибка.
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++
C++ strcmp()
C++ Функция strcmp
C++ STRCMP
strcmp C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.11.2010, 04:50     Баг strcmp #21
Цитата Сообщение от silent_1991 Посмотреть сообщение
Я на то и сетовал
Так вроде бы так и должно быть, http://www.cyberforum.ru/cgi-bin/latex.cgi?\sqrt{1} = 1, я не прав?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
28.11.2010, 11:33
  #22

Не по теме:

Nameless One, да шучу я, сказал же))) Он считает так же неправильно, как и strcmp у ТСа. Надо же было поглумиться))
P.S. А вообще это откуда - наш препод по терверу как-то рассказывал, как он спросил у потока (вроде экономистов), чему равен арифметический квадратный корень из 1... Так вот его цитата: "Они долго считали, да, очень долго... И потом один выдал: "Нууу... Примерно 0,97 получается""

Nameless One
28.11.2010, 11:51
  #23

Не по теме:

у нас про экономистов в универе тоже анекдоты ходят...

silent_1991
28.11.2010, 11:56
  #24

Не по теме:

Nameless One, Угу, а потом мы удивляемся почему так хорошо и богато живём... А потому что экономисты всё преуменьшить норовят, вон даже корень из 1 на три сотых недобрали...

alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
28.11.2010, 13:09  [ТС]     Баг strcmp #25
Ребята, посмотрите видео, на 50-й секунде на паузе чётко видно, что s содержит "X", str содержит "O".
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.11.2010, 13:10     Баг strcmp #26
alexsvk, ага, зато s не содержит '\0'
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
28.11.2010, 13:28  [ТС]     Баг strcmp #27
Цитата Сообщение от Nameless One Посмотреть сообщение
alexsvk, ага, зато s не содержит '\0'
И опять же, на видео видно, что s[0] = буква, s[1]='\0';
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.11.2010, 13:31     Баг strcmp #28
Не знаю, видео твое не смотрел, но сам ты написал:
Цитата Сообщение от alexsvk Посмотреть сообщение
Debug:
s[0] = 'X';
s [1] = 'O';
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.11.2010, 13:36     Баг strcmp #29
alexsvk, ты можешь чётко пояснить, что ты хочешь в конечном итоге? Если нужно определить НЕравенство строк, то вместо

C
1
if (strcmp(str,s) == true)
надо писать

C
1
if (strcmp(str,s))
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
28.11.2010, 13:45  [ТС]     Баг strcmp #30
Evg, а true не годится?

Добавлено через 35 секунд
Цитата Сообщение от Nameless One Посмотреть сообщение
Не знаю, видео твое не смотрел, но сам ты написал:
писал же, что описка была. s[1]='\0';
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
28.11.2010, 13:54     Баг strcmp #31
Цитата Сообщение от alexsvk Посмотреть сообщение
Evg, а true не годится?
С чего и следовало начать:
strcmp возвращает отрицательное число, когда первая строка меньше второй, 0, когда они равны, положительной число, когда первая строка больше второй. Она возвращает не bool, а int. Матчасть надо учить.
Блин, а я ведь спрашивал уже:
Цитата Сообщение от Nameless One Посмотреть сообщение
alexsvk, а теперь скажи, какие значения аргументов у функции strcmp в момент "бага" и какой результат ты от нее ожидаешь (str равна s, str больше s, str меньше s)?
Разве так трудно было сразу четко и ясно ответить?

Цитата Сообщение от alexsvk Посмотреть сообщение
Evg, а true не годится?
Чтобы совсем не было сомнений, скажи, что выдаст эта программа:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
        std::cout << std::boolalpha << (((int) -1) == true) << std::endl;
        return 0;
}
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16825 / 5246 / 321
Регистрация: 30.03.2009
Сообщений: 14,126
Записей в блоге: 26
28.11.2010, 13:55     Баг strcmp #32
Цитата Сообщение от alexsvk Посмотреть сообщение
Evg, а true не годится?
Я мог бы ответить на этот вопрос коротко: "нет". Но если тебе действительно интересно понять, почему так (хотя в теме уже несколько раз об этом сказали), то тебе придётся ответить на встречный вопрос: "а с чего ты решил, что годится?"
alexsvk
8 / 8 / 1
Регистрация: 15.07.2010
Сообщений: 255
28.11.2010, 22:02  [ТС]     Баг strcmp #33
Цитата Сообщение от Nameless One Посмотреть сообщение
С чего и следовало начать:
strcmp возвращает отрицательное число, когда первая строка меньше второй, 0, когда они равны, положительной число, когда первая строка больше второй. Она возвращает не bool, а int. Матчасть надо учить.
Блин, а я ведь спрашивал уже:Разве так трудно было сразу четко и ясно ответить?


Чтобы совсем не было сомнений, скажи, что выдаст эта программа:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
        std::cout << std::boolalpha << (((int) -1) == true) << std::endl;
        return 0;
}
false
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2010, 22:07     Баг strcmp
Еще ссылки по теме:

C++ std::regex : баг на сайте или баг компилятора?
C++ strcmp
Strcmp C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
28.11.2010, 22:07     Баг strcmp #34
Цитата Сообщение от alexsvk
false
И следовательно?..
Yandex
Объявления
28.11.2010, 22:07     Баг strcmp
Ответ Создать тему
Опции темы

Текущее время: 05:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru