Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <strings.h>
  4. #include <readline/readline.h>
  5. #include <readline/history.h>
  6.  
  7. char **character_name_completion(const char *, int, int);
  8. char *character_name_generator(const char *, int);
  9.  
  10. char *character_names[] = {
  11. "Arthur Dent",
  12. "Ford Prefect",
  13. "Tricia McMillan",
  14. "Zaphod Beeblebrox",
  15. NULL
  16. };
  17.  
  18. int main()
  19. {
  20. rl_attempted_completion_function = character_name_completion;
  21.  
  22. printf("Who's your favourite Hitchiker's Guide character?\n");
  23. char *buffer = readline("> ");
  24. if (buffer) {
  25. printf("You entered: %s\n", buffer);
  26. free(buffer);
  27. }
  28.  
  29. return 0;
  30. }
  31.  
  32. char **
  33. character_name_completion(const char *text, int start, int end)
  34. {
  35. rl_attempted_completion_over = 1;
  36. return rl_completion_matches(text, character_name_generator);
  37. }
  38.  
  39. char *
  40. character_name_generator(const char *text, int state)
  41. {
  42. static int list_index, len;
  43. char *name;
  44.  
  45. if (!state) {
  46. list_index = 0;
  47. len = strlen(text);
  48. }
  49.  
  50. while ((name = character_names[list_index++])) {
  51. if (strncmp(name, text, len) == 0) {
  52. return strdup(name);
  53. }
  54. }
  55.  
  56. return NULL;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement