Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпоры печатать.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
379.36 Кб
Скачать
      1. Преобразования в код ascii, к верхнему и нижнему регистрам

Следующие макросы и функции позволяют преобразовывать целочисленные коды ASCII:

Макрос

Преобразование

int toascii(ch)

В символ ASCII

int tolower(ch)

В символ верхнего регистра, если это символ нижнего регистра

int _tolower(ch)

В символ верхнего регистра

int toupper(ch)

В символ нижнего регистра, если это символ верхнего регистра

int _toupper(ch)

В символ нижнего регистра

41. Строковые функции (string.H). Работа с функциями манипуляции памятью. Нахождение символа в строке. Сравнение символов в строках. Заполнение буфера при помощи memset().

Функции для работы со строками, объявленные в string.h, как правило, принимают указатели в качестве параметров и возвращают указатель или целое число. Вы сможете найти описание всех этих функций в следующем разделе или, более подробно, в справочнике Visual C++ Run-Time Library Reference (стандартная библиотека Visual C++). В дополнение к этому, в string.h объявлены также функции манипуляции с областями памяти, например, memccpy() и memset(). Функции, перечисленные в таблице, употребляются наиболее часто. Функции для работы со строками и буферами памяти дают программисту гибкие и мощные инструменты для решения различных задач.

      1. Работа с функциями манипуляции памятью

Функции для работы с памятью, упомянутые в предыдущем разделе, объявляются следующим образом:

void *memccpy(void *dest,void *source,int ch,unsigned count)

void *memchr(void *buf,int ch,unsigned count)

int memcmp(void *bufl,void *buf2,unsigned count)

void *memcpy(void *dest,void * source,unsigned count)

int memicrnp (void *bufl,void *buf 2, unsigned count)

void *meimiove (void *dest,void * source, unsigned count)

void *memset(void *dest,int ch,unsigned count)

Здесь *buf, *buf1, *buf2, *dest и *source — указатели на соответствующие буферы памяти, целое ch содержит код символа. Параметр count указывает функции, сколько символов следует обработать.

        1. Нахождение символа в строке

В этом примере мы при помощи функции memchr() сканируем буфер в поисках строчной буквы "f".

//19MEMCHR.C

//Пример использования функции memchr.

//Поиск символа в буфере.

#include <string.h>

#include <stdio.h>

char buf[35];

char *ptr;

main()

{

strcpy(buf,"This is a fine day for a search.");

/* Сегодня удачный день для поисков */

ptr=(char *)memchr(buf,'f',35) ;

if (ptr != NULL)

/* символ находится в позиции %d */

printf("character found at location: %d\n",ptr-buf+1);

else

/* символ не найден */

printf("character not found.\n");

return (0);

}

В данном примере, если строчная "f "есть в строке, функция memchr() сообщит: "character found at location: 11".

        1. Сравнение символов в строках

Следующий пример посвящен функции memicmp(). Эта функция сравнивает строки, содержащиеся в буферах buf1 и buf2. Эта функция не учитывает регистр символов.

//19MEMCMP.C

//Пример использования функции memicmp.

//Сравнение двух строк

#include <string.h>

#include <stdio.h>

char buf1[40],buf2[40];

main()

{

strcpy(buf1,"Well, are they identical or not?");

strcpy(buf2,"Well, are they identicle or not?");

//0-строки идентичны с точностью до регистра

//х-(ненулевой результат)-строки различаются

printf("%d\n",memicmp(buf1,buf2,40));

return (0);

}

Если бы не то обстоятельство, что слово 'identical' во второй строке написано неправильно, обе строки были бы одинаковыми. В этом примере memicmp() возвращает ненулевое значение, а именно -1.