Ciao ragazzi , sto implementando una funzione che restituisce una stringa al chiamante ma non riesco a farla funzionare.questo è il codice della funzione registrati che chiama a sua volta la funzione char *crypt che restituisce appunto un puntatore a char...vi spiego il problema. La funzione crypt elabora una stringa,che prima di restituire faccio stampare per essere sicuro che sia quella che mi serviva, e fin qui ok.quindi le dò il return, poi nella funzione chiamante,che deve salvare su file la stringa ricevuta più altri dati,se faccio stampare la stringa ritornata ho un valore strano.
Ho usato la malloc per evitare la distruzione della variabile automatica e poi la free nella funzione chiamante,ma non capisco perchè non funziona
grazie mille in anticipo!
void registrati(FILE *maindb)
{
giocatore nuovo;
char pass[passlenght];
char *crypt(char []);
printf("Quale è il tuo numero nell\'elenco della classe?");
scanf("%d",&nuovo.id);
printf("inserisci il tuo username : ");
scanf("\n%[^\n]",nuovo.nome);
printf("Inserisci una password :");
scanf("\n%[^\n]",pass);
nuovo.password = crypt(pass);
printf("%s\n",nuovo.password);
nuovo.credito = startmoney;
fseek(maindb,(nuovo.id - 1)*sizeof(giocatore),SEEK_SET);
fwrite(&nuovo,sizeof(giocatore),1,maindb);
printf("***Benvenuto nel sistema, \"%s\"\n"
"hai un credito iniziale di %.1f***\n",nuovo.nome,nuovo.credito);
free(nuovo.password);
}
char *crypt(char pass[passlenght])
{
int i,j;
char temp[passlenght],ris[passlenght];
char *passcrypt;
passcrypt = malloc(sizeof(char *));
for(i = (strlen(pass)),j=0 ;i >= 0 ; i--,j++)
{
temp[j] = pass[i-1];
temp[j]++;
}
strncpy(ris,temp,strlen(pass));
ris[strlen(pass)] = '\0';
passcrypt = ris;
printf("%s\n",passcrypt);
return passcrypt;
}