#include #include int string_length(char * my_string); char * reverse_string(char * my_string); int strings_equal(char * string1, char * string2) { int length1 = string_length(string1); int length2 = string_length(string2); if (length1 != length2) { return 0; } int i; for (i = 0; i < length1; i++) { if (string1[i] != string2[i]) { return 0; } } return 1; } // returns 1 if the string is a palindrome, 0 otherwise. int is_palindrome(char * my_string) { int result; char * reverse = reverse_string(my_string); if (strings_equal(reverse, my_string) == 1) { result = 1; } else { result = 0; } free(reverse); return result; } int string_length(char * my_string) { int counter = 0; while(1) { if (my_string[counter] != 0) { counter++; } else { break; } } return counter; } char * reverse_string(char * my_string) { int length = string_length(my_string); char * result = (char *) malloc(sizeof(char) * (length + 1)); int i; for (i = 0; i < length; i++) { int j = length - i - 1; result[i] = my_string[j]; } result[length] = 0; return result; } int main() { char * input = (char *) malloc(sizeof(char) * 1000); printf("enter a string:\n"); scanf("%s", input); int result = is_palindrome(input); if (result == 1) { printf("%s IS a palindrome!!!\n"); } else { printf("%s is NOT a palindrome\n"); } free(input); }