memchr
Определено в заголовочном файле <string.h> | ||
|---|---|---|
void* memchr( const void* ptr, int ch, size_t count ); | (1) | |
/*QVoid*/ *memchr( /*QVoid*/ *ptr, int ch, size_t count ); | (2) | (начиная с C23) |
1) Находит первое вхождение
(unsigned char)ch в первых count байтах (каждый интерпретируется как unsignedchar) объекта, на который указывает ptr.
2) Обобщённая по типу функция, эквивалентная (1). Пусть
T — неквалифицированный тип объекта (включая void). - Если
ptrимеет тип constT*, тип возвращаемого значения — constvoid*. - В противном случае, если
ptrимеет тип T*, тип возвращаемого значения — void*. - В противном случае поведение не определено.
(memchr) или указатель на функцию), становится видимым фактическое объявление функции (1).Поведение не определено, если доступ происходит за пределами конца просматриваемого массива. Поведение не определено, если ptr является нулевым указателем.
| Эта функция ведёт себя так, как если бы она читала байты последовательно и останавливалась сразу после нахождения совпадающего байта: если массив, на который указывает | (начиная с C11) |
Параметры
| ptr | - | указатель на объект, который необходимо проверить |
| ch | - | байт для поиска |
| count | - | максимальное число байтов для проверки |
Возвращаемое значение
Указатель на местоположение байта или нулевой указатель, если такой байт не найден.
Пример
#include <stdio.h>
#include <string.h>
int main(void)
{
const char str[] = "ABCDEFG";
const int chars[] = {'D', 'd'};
for (size_t i = 0; i < sizeof chars / (sizeof chars[0]); ++i)
{
const int c = chars[i];
const char *ps = memchr(str, c, strlen(str));
ps ? printf ("character '%c'(%i) found: %s\n", c, c, ps)
: printf ("character '%c'(%i) not found\n", c, c);
}
return 0;
}
Возможный вывод:
character 'D'(68) found: DEFG character 'd'(100) not found
Ссылки
- Стандарт C23 (ISO/IEC 9899:2024):
- 7.24.5.1 Функция memchr (с. TBD)
- Стандарт C17 (ISO/IEC 9899:2018):
- 7.24.5.1 Функция memchr (с. 267–268)
- Стандарт C11 (ISO/IEC 9899:2011):
- 7.24.5.1 Функция memchr (с. 367)
- Стандарт C99 (ISO/IEC 9899:1999):
- 7.21.5.1 Функция memchr (с. 330)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 4.11.5.1 Функция memchr
См. также
| находит первое вхождение символа (функция) |
|
Документация C++ для memchr |
|
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/c/string/byte/memchr