Celebron ha ragione, per prima cosa l'interfaccia della funzione deve essere:
char* funzione(char *stringa_dove_cercare, char *stringa_da_cercare);
Poi c'è una questione da considerare, se nella tua funzione tu fai:
codice:
char esito[MAXNUM];
/*codice della funzione*/
return esito;
il compilatore dovrebbe darti un warning del tipo: "function 'funzione' return a local variable", che ti indica che tu ritorni come risultato della funzione una stringa variabile locale di 'funzione' e che quindi, terminata questa funzione, cesserà di esistere!
Per far si che "continui ad esistere" dopo che 'funzione' è terminata e che quindi possa essere correttamente ritornata occorre allocare dinamicamente, facendo:
codice:
char* esito;
esito = (char*) malloc (MAXNUM*sizeof(char));
/*codice della funzione*/
return esito;
Nel main però è fondamentale, prima di terminare il programma, liberare la memoria allocata con la free(). Quindi ti conviene fare tipo:
codice:
char* result;
result = funzione (v, w);
/*usi result come ti serve*/
free (result);
return 0;
Detto ciò, come evidenziato da Celebron, la tua funzione non funziona (
) molto, ma è un altro paio di maniche!