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;
}