rpmatch - Determine whether a response is affirmative or
negative
#include <stdlib.h>
int rpmatch(
const char *response );
Standard C Library (libc)
User input entered in response to a question that requires
an affirmative or negative answer.
The rpmatch() function determines whether the string value
of the response parameter matches the affirmative or negative
response expression as specified by the LC_MESSAGES
category in the program's current locale. Both response
expressions, defined in the locale, may be extended regular
expressions.
A possible value of the affirmative expression, yesexpr,
for a English-language locale is "^([yY]|[yY][eE][sS])".
This expression will match any value of the response
parameter that has consists of the letter Y (in uppercase
or lowercase) or the letters YES (in any mixture of uppercase
and lowercase letters).
A value of 1 is returned if the string value of the
response parameter is matched by the affirmative expression;
a value of 0 (zero) is returned if the string value
of the response parameter is matched by the negative
expression. If neither expression matches the string value
of the response parameter, a value of -1 is returned.
The following example requests a response from the user
and uses the rpmatch() function to determine if the
response is affirmative or negative.
#include <stdlib.h> #include <stdio.h> #include <locale.h>
#include <string.h> #define SLENGTH 80
main() {
char str[SLENGTH], *eol;
int ans;
(void)setlocale(LC_ALL, " " );
printf("Do you want to perform this operation: ");
fgets(str, SLENGTH, stdin);
if ((eol = strchr(str, '\n')) != NULL)
*eol = '\0'; /* Replace newline with null */
else
return; /* Line entered too long */
ans = rpmatch(str);
if (ans == 1)
printf("You responded affirmatively\n");
else if (ans == 0)
printf("You responded negatively\n");
else
printf("Your answer did not match\n"); }
Commands: grep(1).
Functions: regcomp(3), regexec(3), setlocale(3).
Files: locale(4).
rpmatch(3)
[ Back ] |