Non puoi creare la stringa dentro alla funzione, una volta terminata la funzione essa cessera' di esistere. Puoi allocare lo spazio necessario per contenere la stringa con calloc(), poi ti devi ricordare di liberare la memoria.
codice:
//puntatore a char per la stringa
char *str;
//la funzione restituisce in n la lunghezza della stringa
int n = funzione(str);
//ora str e' un puntatore alla stringa
.
.
.
//una volta finito di utilizzare la stringa libero la memoria
free(str);
int funzione(char *s)
{
int num_car = 0;
if(calloc(20, sizeof(char)))
{
//alloca lo spazio per 20 caratteri
//num_car = lunghezza stringa
}
return num_car;
}
In questo modo la stringa allocata dinamicamente rimane disponibile anche dopo la fine della funzione.
Se per qualche motivo l'allocazione non va a buon fine num_car rimane a 0, altrimenti va impostato alla lunghezza della stringa