rpmatch -
определяет,
является
ли ответ на
вопрос
утвердительным
или
отрицательным
Standard C library (
libc,
-lc)
#include <stdlib.h>
int rpmatch(const char *response);
rpmatch():
начиная с glibc 2.19:
_DEFAULT_SOURCE
glibc 2.19 и старее:
_SVID_SOURCE
Функция
rpmatch()
обрабатывает
ответ
пользователя
«да» или
«нет» на
вопросы,
учитывая
интернационализацию.
В
аргументе
response должен
указываться
ответ
пользователя
в виде
строки,
заканчивающейся
null,
полученной,
например, с
помощью
fgets(3)
или
getline(3).
Пользовательские
языковые
настройки
определяются
с помощью
переменных
окружения
LANG,
LC_MESSAGES и
LC_ALL,
если для их
учёта
программа
вызывала
setlocale(3).
Regardless of the locale, responses matching
^[Yy] are always accepted as
affirmative, and those matching
^[Nn] are always accepted as negative.
После
проверки
response, функция
rpmatch()
возвращает
0 при
найденном
отрицательном
ответе
(«нет»), 1 при
положительном
ответе
(«да») и -1,
когда
значение
response не
распознано.
Возвращаемое
значение -1
может
указывать
на
неправильные
входные
данные,
либо
какую-то
другую
ошибку. Не
стоит
проверять
является
ли
возвращаемое
значение
лишь
отличным
от нуля.
Функция
rpmatch()
может
завершиться
с ошибкой
по любой из
причин, по
которым
могут не
выполниться
regcomp(3) или
regexec(3);
причина
ошибки не
указывается
в
errno или
где-то ещё —
это
указывает
на ошибку в
самом
механизме regex
(но этот
случай не
отличается
от
нераспознанных
значений
response).
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
rpmatch() |
Безвредность
в нитях |
MT-Safe locale |
rpmatch() is not required by any standard, but available under the GNU C
library, FreeBSD, and AIX.
The
YESEXPR and
NOEXPR of some locales (including "C")
only inspect the first character of the
response. This can mean that
"yno" et al. resolve to
1. This is an unfortunate historical
side-effect which should be fixed in time with proper localisation, and should
not deter from
rpmatch() being the proper way to distinguish between
binary answers.
Следующая
программа
показывает
результаты,
когда в
rpmatch()
передана
строка,
полученная
программой
из
командной
строки.
#define _DEFAULT_SOURCE
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int
main(int argc, char *argv[])
{
if (argc != 2 || strcmp(argv[1], "--help") == 0) {
fprintf(stderr, "%s response\n", argv[0]);
exit(EXIT_FAILURE);
}
setlocale(LC_ALL, "");
printf("rpmatch() returns: %d\n", rpmatch(argv[1]));
exit(EXIT_SUCCESS);
}
fgets(3),
getline(3),
nl_langinfo(3),
regcomp(3),
setlocale(3)
Русский
перевод
этой
страницы
руководства
был сделан
aereiae <
[email protected]>, Azamat Hackimov
<
[email protected]>, Dmitriy S. Seregin <
[email protected]>,
Katrin Kutepova <
[email protected]>, Lockal
<
[email protected]>, Yuri Kozlov <
[email protected]>,
Баринов
Владимир и
Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]