rendered paste body#include <stdlib.h>#include <string.h>#include <stdio.h>#include <ctype.h>char* selectChars(char* from, int (*what)(int), int (*where)(int)){ char* str = (char*)malloc(sizeof(char)*(strlen(from) + 1)); char* ptr = str; while (*from != '\0') { if ((*where)(*from)) { *ptr++ = (what == NULL) ? *from : (*what)(*from); } from++; } *ptr = '\0'; return str;}char* reverse(char* str){ char temp; char* front = str; char* back = str; while (*back != '\0') { back++; } back--; while (front < back) { temp = *back; *back = *front; *front = temp; front++; back--; } return str;}int isPalindrome(char* str){ char* forwards = selectChars(str, tolower, isalpha); char* backwards = reverse(selectChars(str, tolower, isalpha)); int result = (strcmp(forwards, backwards) == 0); free(forwards); free(backwards); return result;}int main(int argc, char** argv){ if (argc < 2) { puts("Requires a string to check."); return 0; } if (isPalindrome(argv[1])) { puts("Is."); } else { puts("Isn't."); } return 0;}