ce n'est pas possible de le faire comme tu voudrais. Surtout en C. Il faudrait que le code se réecrive tout seul et se recompile en cours d'execution ...
Tu n'a pas vraiment d'autre choix que de passer par un switch. Eventuellement tu peux passer par un tableau de fonction mais il ne sera pas indexé par les noms des fonctions. Sinon tu as les tables de hachage mais c'est pas le plus simple a implementer.
Je te conseil de faire un tableau de correspondance nom de fonction -> code (int)
genre:
0 - "parler"
1 - "marcher"
2 - "tourner"
...
une fonction qui a partir d'une chaine te renvois le code de la fonction correspondante (ou une erreur si elle n'existe pas)
et pour finir un tableau de fonction dans lequel tu rentre tes fonctions dans le meme ordre que le 1er tableau
0 - void parler()
1 - void marcher()
2 - void tourner()
...
je sais pas trop si j'ai été clair ou meme pertinent, mais bonne chance pour la suite