diff options
-rw-r--r-- | include/user_input.h | 7 | ||||
-rw-r--r-- | src/user_input.c | 46 |
2 files changed, 53 insertions, 0 deletions
diff --git a/include/user_input.h b/include/user_input.h new file mode 100644 index 0000000..4e051ed --- /dev/null +++ b/include/user_input.h @@ -0,0 +1,7 @@ +#ifndef SPM_USER_INPUT_H +#define SPM_USER_INPUT_H + +int spm_user_yesno(int answer, int empty_input_is_yes); +void spm_user_yesno_test(); + +#endif //SPM_USER_INPUT_H diff --git a/src/user_input.c b/src/user_input.c new file mode 100644 index 0000000..061fb2e --- /dev/null +++ b/src/user_input.c @@ -0,0 +1,46 @@ +#include "spm.h" + +/** + * Basic case-insensitive interactive choice function + * @param answer + * @param answer_default + * @return + */ +int spm_user_yesno(int answer, int empty_input_is_yes) { + int result = 0; + answer = tolower(answer); + + if (answer == 'y') { + result = 1; + } else if (answer == 'n') { + result = 0; + } else { + if (empty_input_is_yes) { + result = 1; + } else { + result = -1; + } + } + + return result; +} + +void spm_user_yesno_test() { + int choice; + int status; + while ((choice = getchar())) { + status = spm_user_yesno(choice, 1); + if (status == -1) { + puts("Please answer Y or N"); + continue; + } + else if (status == 0) { + puts("You answered no"); + break; + } + else if (status == 1) { + puts("You answered yes"); + break; + } + } +} |