Scusate se il titolo è un po 'confuso. Quello che sto facendo è la creazione di una struttura come:Assegnazione di valori a una chiave in un puntatore a un record in C
struct record
{
int value;
int key;
};
Quindi, utilizzando un typedef per chiamare un puntatore per registrare "Item" come questo:
typedef struct record* Item;
Fondamentalmente sto seguendo come era fatto in Algoriths in C di Robert Sedgewick (terza edizione) a pagina 290 nel caso in cui qualcuno capiti di avere questo libro.
Quello che sto avendo problemi è la lettura di un valore dalla console, quindi l'assegnazione alla chiave. Ecco quello che ho, e gli errori che sto ricevendo:
void setKey(Item *element, int x)
{
element->key = x;
}
void standInput(Item A[], int length)
{
int i;
int x;
for(i = 0; i < length; i++)
{
printf("Enter a value for spot %i: ", i+1);
scanf("%d", &x);
setKey(A[i], x);
}
}
gcc Item.h
Item.h:33:6: warning: conflicting types for ‘setKey’
Item.h:23:3: note: previous implicit declaration of ‘setKey’ was here
Se potessi ottenere una piccola spinta nella giusta direzione, sarei davvero grato. Ho capito che il programma per questo compito funzionava perfettamente quando Item era solo semplice, ma ora sto cercando di usare Item-> Key e sono un po 'perso :) Grazie!
Se qualcuno ha bisogno di un'altra parte del codice che non ritenevo necessaria, la posterò non appena visualizzerò la richiesta.
Revisione: ho spostato la funzione setKey sopra standInput, quindi l'errore di compilazione è scomparso. Quello che sto ottenendo anche se è un difetto segmento, quindi sto ancora l'assegnazione di sbagliato :)
+1 per una domanda completa e completa, che include la descrizione di ciò che hai provato e il messaggio di errore. * so * rinfrescante per vedere – bernie
Stai allocando memoria per ogni articolo nell'array? – Cornstalks