A dire il vero non si è capito molto di quello che vuoi fare con quella funzione, ma soprattutto non ho capito perchè implementarla in quel modo (a cosa serve "a"?) e perchè usare una funzione ricorsiva?
Questa è la tua modificata. Fa le stesse cose?
codice:int parola_chiave( char *key, char *text ) { if( (*key == '\0') && (*text == '\0') ) return 1; if( *key != *text ) return 0; else { ++key; ++text; return parola_chiave( key, text ); } }