Vettori e strutture che si picchiano

di
Anonimizzato4813
il
1 risposte

Vettori e strutture che si picchiano

Ciao a tutti, vi scrivo per la prima volta perchè ho un problema che non riesco a risolvere...
innanzitutto eccovi il codice:
#include <stdio.h>
#define MAX 5

typedef struct arr {
	char *nome;	
	struct arr *pref;	
	struct arr *next;
}LISTA;


LISTA *vett[MAX];

int main()
{
	int i;
	
	for(i = 0; i < MAX ; i++)
	{
		vett[i] = (LISTA*)"pippo";
		printf("vett[%d] = %s\n", i,(char *)vett[i]);
	}
return 0;
}
fin qui se si esegue, funziona, ma non capisco in che campo venga memorizzato "pippo"...ho provato a commentare gli elementi della struttura e va lo stesso...
io ho intenzione di decidere DOVE memorizzare, per esempio nel campo
char *nome
....ho provato nel modo + intuitivo con
vett[i]->nome = (LISTA*)"pippo";
e simili ma non è giusto...tutto questo perchè ho bisogno di fare in modo che nel campo nome ci sia appunto un nome con associato, (puntato da struct arr *pref;) un'altro array di caratteri.

è possibile fare quello che voglio fare con vettori e non con puntatori a struttura?

grazie in anticipo per l'interesse, LiNuXaTiCo

1 Risposte

  • Re: Vettori e strutture che si picchiano

    Ciao nel codice ci sono diverse cose che non vanno e che non capisco.
    LISTA *vett[10]; //hai creato un vettori di puntatori LISTA che puntano a chi?? devi fare una new altrimenti fai LISTA vet[10];
    poi a che server fare il cast LISTA* su un char??
    quando crei dei puntatori essi devono puntare a un area di memoria quindi meglio fare cosi che è + semplice:
    typedef struct arr{
    char name[10];
    //char* name;
    struct arr *prec;
    struct arr *next;
    }LISTA;

    LISTA vett[10];
    //LISTA *vett[10];

    int main()
    {
    strcpy(vett[0].name,"pippo");
    return 1;
    }

    come invece fai tu (cioè ciò che io ho commentato) avresti dovuto fare la new ogni volta.
    //LISTA *vett[10]; viene LISTA *vett = new LISTA[10];
    cosi anche name
    dopo essere stato dichiarato char* name; nella struttura viene:

    vett[0]->name = new char[10];
    strcpy(vett[0]->name,"pippo");
Devi accedere o registrarti per scrivere nel forum
1 risposte