Oppure

Loading
24/01/15 21:08
Sguaraus
Stai facendo vacillare tutto ciò che ho capito di C :yup:
Quindi come dovrei fare ad allocare la memoria per la struttura?
aaa
24/01/15 21:14
AldoBaldo
Mi sa che sei in alto mare... :(
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti.
24/01/15 21:17
Nel programma hai usato la typedef per poter utilizzare un nuovo tipo di dati e questo nuovo tipo di dati l'hai chiamato TPprodotto

Poi hai indicato con

TPprodotto *prodotto;

che vuoi utilizzare una variabile puntatore di tipo TProdotto.

A questo punto ti manca solo l'allocazione dello spazio a cui punta il tuo puntatore, ovvero

prodotto = (TProdotto *)malloc(sizeof(TProdotto));

e solo dopo potrai utilizzare il puntatore.

Cosa c'è di diverso in questo rispetto alle nozioni che hai imparato?
24/01/15 21:42
Sguaraus
Un po' di roba. A me hanno detto di usare la funzione malloc solo quando voglio allocare memoria nello heap, per usare lo stack non è necessario, basta dichiarare le strutture e puntatori a struttura. Tanto è vero che al corso abbiamo visto dati strutturati, puntatori,altri argomenti e solo dopo, le strutture dati dinamiche. Tuttavia qualche programma l'ho fatto e non ho avuto problemi con puntatori e strutture.
aaa
24/01/15 22:08
Se vuoi usare variabili locali allora dovevi scrivere nella funzione lettura

TPprodotto prodotto;

e usarlo ad esempio, così

fread(&prodotto.codice, sizeof(int), 1,fp);


P.S. Con & ... mi era sfuggito ...
Ultima modifica effettuata da 24/01/15 23:17
24/01/15 22:17
Sguaraus
senza & mi da:

con scorta e codice (tipo int) [Warning] passing argument 1 of 'fread' makes pointer from integer without a cast [enabled by default]

con costo (tipo float) [Error] incompatible type for argument 1 of 'fread'
Ultima modifica effettuata da Sguaraus 24/01/15 23:18
aaa
24/01/15 23:22
Sguaraus
con & smette di funzionarmi il programma dopo qualche secondo che ha ciclato.
Però sono andato avanti con le funzioni che dovevo fare. Probabilmente c'è un errore da qualche altra parte...
Ultima modifica effettuata da Sguaraus 24/01/15 23:24
aaa
24/01/15 23:25
Ogni volta che hai problemi devi postare il codice che utilizzi, altrimenti di che parliamo?