Hi, Johannes.
Using char curname[MAX_WINDOW_NAME_LENGTH] is easiest. This is called stack allocation, and has the advantage that it is automatically cleaned up when the scope exits.
A function pointer is just a variable to which you assign a pointer. Using typedefs helps immensely to get it right. I think you're close, but I'd need to check with a compiler to make sure I haven't myself made a syntax error. Something like
typedef int (*compare_window_name_function)(char *name1, char *name2, int length);
compare_window_name_function my_compare = strcmp;
if((*my_compare)(a_name, another_name, 10)) { printf("yeah!\n"); }
(I haven't compiled that, it's probably slightly wrong.)