RPMATCH - Linux手册页
Linux程序员手册 第3部分
更新日期: 2020-06-09
名称
rpmatch-确定问题的答案是肯定的还是否定的
语法
#include <stdlib.h> int rpmatch(const char *response);
glibc的功能测试宏要求(请参阅feature_test_macros(7)):
rpmatch():
从glibc 2.19开始:
_DEFAULT_SOURCE
Glibc 2.19及更早版本:
_SVID_SOURCE
说明
rpmatch()处理用户对是或否问题的响应,并支持国际化。
response应该是一个空终止的字符串,其中包含用户提供的响应,可能是通过fgets(3)或getline(3)获得的。
如果程序调用了setlocale(3)来进行更改,则根据环境变量LANG,LC_MESSAGES和LC_ALL考虑用户的语言首选项。
无论使用哪种语言环境,匹配ha [Yy]的响应始终被接受为肯定回答,而匹配ha [Nn]的响应始终被接受为否定回答。
返回值
检查响应后,rpmatch()对于公认的否定响应("否")返回0,对于公认的肯定响应("是")返回1,而当响应值未被识别时返回-1。
错误说明
返回值-1可能表示输入无效或其他错误。仅测试返回值是否为非零是不正确的。
rpmatch()可能由于regcomp(3)或regexec(3)可能失败的任何原因而失败;错误的原因无法从errno或其他任何地方获得,而是表示正则表达式引擎发生故障(但这种情况与无法识别的响应值无法区分)。
属性
有关本节中使用的术语的说明,请参见attribute(7)。
Interface | Attribute | Value |
rpmatch() | Thread safety | MT-Safe locale |
遵循规范
rpmatch()并不是任何标准所必需的,但是在其他一些系统上也可以使用。
BUGS
rpmatch()实现仅查看响应的第一个字符。结果," nyes"返回0," ynever;在一百万年之内"返回1。例如,更严格地接受输入字符串是更可取的(例如,使用regex(7)中描述的扩展正则表达式符号) ):ha([yY] | yes | YES)$和ha([nN] | no | NO)$。
示例
当rpmatch()应用于程序的命令行参数中给出的字符串时,以下程序显示结果。
#define _SVID_SOURCE #include <locale.h> #include <stdlib.h> #include <string.h> #include <stdio.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)
出版信息
这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/。