In a comment, you say that you pass functions to a literal string, for example:
palindrome("In girum imus nocte et consumimur igni")
where palindromepasses its argument toLower. This will not work because string literals are read-only and you are trying to modify it. Instead, you can use:
char str[] = "In girum imus nocte et consumimur igni";
palindrome(str);
palindrome toLower.