Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34

    Array di Strutture

    Salve a tutti, ho la seguente parte codice che dovrebbe servirmi per risolvere un'esercizio per un'esame:

    codice:
    typedef struct M
    {
    	char  *Molecola;
    } ;
    
                char nome[80];
                int elem = 10;
    
                M* NomeMolecola = (M*) malloc(elem * sizeof(M));
    
    	if (NomeMolecola == NULL)
    		printf("Errore");
    
    	M* p;
    	p = NomeMolecola;
    	for (int i=0; i < elem; i++)
    	{
    		p->Molecola = NULL;
    		p++;
    	}
    
    	for (int i=0; i < elem; i++)
    	{
                              printf("nome molecola: \n";
    		scanf("%s", nome);
    		NomeMolecola->Molecola = strdup(nome);
    		NomeMolecola++;
    	}
    
    	
    	for (int i=0; i < elem; i++)
    	{
    		printf("%s\n", NomeMolecola[i].Molecola);
    		system("pause");
    	}
    Non riesco a capire per quale motivo quando faccio la printf del contenuto il programma va in crash, in debug dopo la scanf le strutture puntano a dei valori validi, nella printf no!
    Grazie in anticipo !

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480

    Re: Array di Strutture

    Se durante il primo for modifichi il valore del puntatore NomeMolecola con

    NomeMolecola++;

    quando parte il secondo for, quel puntatore avrà un valore non valido (non punterà all'inizio dell'insieme di strutture ma alla fine).

    Devi eliminare le due righe

    NomeMolecola->Molecola = strdup(nome);
    NomeMolecola++;

    e al loro posto usare

    NomeMolecola[i].Molecola = strdup(nome);
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Grazie, forse nelle 1000 prove che ho fatto l'ho anche provato....cmq appena posso provo ....

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Grazie Oregon!
    Funziona!
    Probabilmente quando l'avevo provato non avevo tolto NomeMolecola++.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    In futuro, specifica il linguaggio di programmazione usato nel titolo della discussione e usa gli appositi tag CODE quando posti del codice, come indicato nel Regolamento interno.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    34
    Ooops, chiedo scusa...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.