Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 1 марта!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Функция Сравнивает два блока каждый из которых длиной в n байт.

 
 Синтаксис          #include<mem.h>
 
                    Версия near: void *memcmp(const void *s1, const
 
                                  void *s2,size_t n);
 
 
 
                    Версия far:  void *_fmemcmp(const void *s1, const
 
                                  void *s2,size_t n);
 
 
 
 Файл содержащий    mem.h,string.h
 
 прототип
 
 
 
 Описание           memcmp сравнивает первые n байт блоков s1 и s2,
 
                    как значения типа unsigned char.
 
 
 
 Возвращаемое       memcmp возвращает значение:
 
 значение
 
                    <0 - если s1 меньше s2
 
                    =0 - если s1 равно s2
 
                    >0 - если s1 больше s2
 
 
 
                    Т.к. memcmp производит сравнение значений, имеющих
 
                    тип unsigned char, то при таком вызове:
 
 
 
                        memcmp("\xFF", "\x7F",1);
 
 
 
                    возвращаемое значение будет > 0.
 
 
 
 Переносимость      memcmp  доступна в UNIX System V и поддерживается
 
                    стандартом ANSI C.
 
 
 
 Смотрите также     memccpy, memmove, memset, movedata, movemem.
 
 
 
 Пример:
 
 
 
 #include<stdio.h>
 
 #include<string.h>
 
 
 
 int main(void)
 
 {
 
    char *buf1 = "aaa";
 
    char *buf2 = "bbb";
 
    char *buf3 = "ccc";
 
    int stat;
 
    stat = memcmp(buf2,buf1,strlen(buf2));
 
    if(stat>0)
 
       printf("buf2 > buf1\n");
 
    else
 
       printf("buf2 < buf1\n");
 
    stat = memcmp(buf2,buf3,strlen(buf2));
 
    if(stat<0)
 
       printf("buf2 > buf3\n");
 
    else
 
       printf("buf2 < buf3\n");
 
    return 0;
 
 }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS