All pastes #1979282 Raw Edit

Untitled

public c v1 · immutable
#1979282 ·published 2010-11-02 02:33 UTC
rendered paste body
#include <stdlib.h>#include <string.h>#include <stdio.h>int isAlpha(char ch){	return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z');}char* selectChars(char* from, int (*where)(char)){	char* str = (char*)malloc(sizeof(char)*(strlen(from) + 1));	char* ptr = str;	while (*from != '\0')	{		if ((*where)(*from))		{			*ptr++ = *from;		}		from++;	}	*ptr = '\0';	return str;}char* toLower(char* str){	char* ptr = str;	while (*ptr != '\0')	{		if (*ptr >= 'A' && *ptr <= 'Z')		{			*ptr += 'a' - 'A';		}		ptr++;	}	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 = toLower(selectChars(str, isAlpha));	char* backwards = reverse(toLower(selectChars(str, 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;}