Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2012, 14:20   #1
goluzov
Форумчанин
 
Регистрация: 26.06.2010
Сообщений: 168
По умолчанию сравнение строк

Код:
char *massiv ="\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01";
	
	if (strncmp(massiv, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 10) != 0)
	{
		cout << "Error:........................\n";

	}
подскажите почему они одинаковые? ведь там в конце \x01 а там \x00
goluzov вне форума Ответить с цитированием
Старый 26.08.2012, 14:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

memcmp() использовать не желаешь?
Код:
int __cdecl strncmp (
    const char * first,
    const char * last,
    size_t count
)
{
...
            if (*(first - 4) == 0 || *(first - 4) != *(last - 4))
            {
                return (*(unsigned char *)(first - 4) - *(unsigned char *)(last - 4));
            }
...
/* residual loop */
    for (; n < count; ++n)
    {
        if (*first == 0 || *first != *last)
        {
            return (*(unsigned char *)first - *(unsigned char *)last);
        }
Поэтому она тут не подходит. Поскольку сравнивает по правилам ASCIIZ
I'm learning to live...

Последний раз редактировалось Stilet; 26.08.2012 в 14:37.
Stilet вне форума Ответить с цитированием
Старый 26.08.2012, 14:41   #3
goluzov
Форумчанин
 
Регистрация: 26.06.2010
Сообщений: 168
По умолчанию

спасибо, только плюсик не получается добавить
goluzov вне форума Ответить с цитированием
Старый 26.08.2012, 16:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не страшно, главное проблема решена
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.08.2012, 01:10   #5
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от goluzov Посмотреть сообщение
Код:
char *massiv ="\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01";
	
	if (strncmp(massiv, "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 10) != 0)
	{
		cout << "Error:........................\n";

	}
подскажите почему они одинаковые? ведь там в конце \x01 а там \x00
Потому что strcmp - сравнение СТРОК! А строка - это последовательность байт, оканчивающаяся нулл символом. первый байт твоих массивов - нуль символ, дальше нуля ничего не сравнивается. вот и равны
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение строк в C++ Camaro Chevelle Помощь студентам 5 13.11.2011 23:38
Сравнение строк Hemul Общие вопросы C/C++ 5 19.11.2010 20:36
Макрос на сравнение и подсчет в первом столбце строк, и сумирование значений этих строк в другом столбце Shpr0T Microsoft Office Excel 8 30.08.2010 17:52
Сравнение строк в Си Maiden Помощь студентам 2 29.07.2010 12:45
Сравнение строк Elm0 Паскаль, Turbo Pascal, PascalABC.NET 2 02.06.2008 09:31