[C] Problemi di Segmentation fault con la funzione "strcpy".

di il
3 risposte

[C] Problemi di Segmentation fault con la funzione "strcpy".

Ho problemi con la strcpy, in particolare mi manda in segmentation fault l'esecuzione del seguente codice:
Chiamante:

int main(void)
{
	utente *mioUtente=(utente*)malloc(sizeof(utente));
 	mioUtente->nickname=(char*)malloc(MaxLenNick*sizeof(char));
	mioUtente->password=(char*)malloc(MaxLenPass*sizeof(char));
	
 	strcpy(mioUtente->nickname,"utente1");
 	strcpy(mioUtente->password,"password1");
 	copia(mioUtente);
 	//Altro codice...
}
Funzione che mi da problemi:

void copia(void *value) 
{
	int len=0;
	utente *user=(utente*)value; //cast del void pointer ricevuto in input
	utente *nuovoUtente=(utente*)malloc(sizeof(utente));
	
	len=strlen(user->nickname);
	nuovoUtente->nickname=(char*)malloc(len*sizeof(char));
	len=strlen(user->password);
	nuovoUtente->nickname=(char*)malloc(len*sizeof(char));
	
	strcpy(nuovoUtente->nickname,user->nickname); //ISTRUZIONE che mi genera segmentation fault
	strcpy(nuovoUtente->password,user->password); //ISTRUZIONE che mi genera segmentation fault
	
	printf("utente: %s \npass:%s",nuovoUtente->nickname,nuovoUtente->password);
}
struct "utente":

typedef struct utente 
{
	char *password;
	char *nickname;
}utente;
Non riesco a capire quale sia il problema, ci sto sbattendo la testa da un po di tempo, ma non ne esco a capo . Ogni suggerimento è ben accetto, grazie.

3 Risposte

  • Re: [C] Problemi di Segmentation fault con la funzione "strcpy".

    Http://www.cplusplus.com/reference/cstring/strlen
    without including the terminating null character itself
  • Re: [C] Problemi di Segmentation fault con la funzione "strcpy".

    Grazie, ho modificato così il mio codice:
    
    void copia(void *value) //Funzione che mi da problemi!
    {
    	int len=0;
    	utente *user=(utente*)value; //cast del void pointer ricevuto in input
    	utente *nuovoUtente=(utente*)malloc(sizeof(utente));
    	
    	len=strlen(user->nickname)+1;
    	nuovoUtente->nickname=(char*)malloc(len*sizeof(char));
    	len=strlen(user->password)+1;
    	nuovoUtente->nickname=(char*)malloc(len*sizeof(char));
    	
    	strcpy(nuovoUtente->nickname,user->nickname); //ISTRUZIONE che mi manda in segmentation fault
    	strcpy(nuovoUtente->password,user->password); //ISTRUZIONE che mi manda in segmentation fault
    	
    	printf("utente: %s \npass:%s",nuovoUtente->nickname,nuovoUtente->password);
    }
    
    Ma continua a darmi segmentation fault.
  • Re: [C] Problemi di Segmentation fault con la funzione "strcpy".

    RISOLTO. Riscrivendo il codice mi sono accorto che allocavo 2 volte lo spazio per "nuovoUtente->nickname" e nemmeno una volta per "nuovoUtente->password". Maledetto Copia e Incolla!
Devi accedere o registrarti per scrivere nel forum
3 risposte