-func_table is an array of pointers to functions. func_table[something] is one of those pointers. (*func_table[sth])() is the function pointed by that pointer being called.
Thank you for the quick reply. I DO understand the basics of that, no problem. But why both the variables 'c' and 'cr' ? And exactly how does it work when the user input 'c' is deducted by 'a' ?
Why couldn't you use : (*func_table[c])(); to dereference the array pointer and call the function ?
cr has no purpose here. Maybe the author wanted you to press Enter one more time..
As for c-'a', characters are really numbers. Google "ASCII table". When you enter some symbol, if that symbol is between 'a' and 'g' (that means, between 97 and 103) you need to call the appropriate function. Arrays always start from 0, so you need to map range [97; 103] to [0; 6]. Of course, you do that by subtracting 97 ('a') from input.
Thank you :-) Of course, that eluded me at first sight. It is funny sometimes how in examples (like this code) experienced programmers write /* comments*/ for the easiest pieces of the code, and then leave out comments on the parts that are not so obvious. At least for people like me this is sooooo frustrating. Anyway, thank you so much :-)