From e8db05f86e193e597abca60e997bb17a20a8e0e8 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 5 Nov 2021 01:13:17 -0400 Subject: Produce reversed strings * Produce randomized word characters in strings --- strings.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'strings.c') diff --git a/strings.c b/strings.c index cc95600..f3bcb86 100644 --- a/strings.c +++ b/strings.c @@ -155,3 +155,50 @@ char *str_title_case(char *s) { } return s; } + +char *str_randomize(char *s) { + size_t len; + char tmp = 0; + len = strlen(s); + for (size_t i = len - 1; i > 0; i--) { + size_t from = random() % i + 1; + tmp = s[from]; + s[from] = s[i]; + s[i] = tmp; + } + return s; +} + +char *str_randomize_words(char *s) { + char old[OUTPUT_SIZE_MAX]; + char buf[OUTPUT_SIZE_MAX]; + char *oldp; + char *word; + + strcpy(old, s); + oldp = old; + memset(buf, '\0', sizeof(buf)); + size_t len = strlen(s); + + while ((word = strsep(&oldp, " ")) != NULL) { + str_randomize(word); + strcat(buf, word); + strcat(buf, " "); + } + strncpy(s, buf, len); + return s; +} + +char *str_reverse(char *s) { + size_t dest; + char buf[1024]; + buf[0] = '\0'; + + dest = 0; + for (size_t src = strlen(s); src > 0; src--, dest++) { + buf[dest] = s[src - 1]; + } + buf[dest] = '\0'; + strcpy(s, buf); + return s; +} -- cgit