Je tente d'aborder la feuille de travail collégiale sur la programmation C (pas de marquage pour cela, juste pour améliorer notre apprentissage). Ce que nous sommes censés faire, c'est obtenir quelques détails sur les quais d'expédition. J'ai décidé d'utiliser des structures pour cela.Problèmes avec des structures avec des pointeurs vers des tableaux d'autres structures en C
Mon code est ci-dessous, ce que j'ai besoin d'aide est d'imprimer les informations (pour voir si cela fonctionne) de quoi à l'emplacement des chantiers navals .run. Tout se compile et selon le débogueur shipyard1.run et shipyard2.run pointent vers des emplacements différents, mais je ne peux pas voir les valeurs.
int main(int argc, char** argv)
{
typedef struct dockInfo
{
int dockCode;
int dockLength;
}dckDetails;
typdef struct shipyard
{
char dockName[20];
/* however big this number is thats how many dockInfo structs are needed.*/
int numOfDocks;
dckDetails *run; //points to the array of dockInfo structs
};
struct dockInfo *arrayD; // the array to hold all the dockInfo structs
struct dockInfo tempo; // the temporary dockInfo struct to take in the details
struct shipyard shipyard1;
struct shipyard shipyard2;
/**
* the variables for shipyard1 and shipyard2 are then assigned
**/
int i;
for (i=0;i<shipyard1.numOfDocks;i++)
{
arrayD=calloc(shipyard1.numOfDocks,100); // allocate a new bit of memory for arrayD
tempo.dockCode=45*i;
tempo.dockLength=668*i;
arrayD[i]=tempo; //the element of arrayD becomes tempo.
}
shipyard1.run=arrayD; //make shipyard1.run point to the location of arrayD.
for (i=0;i<shipyard2.numOfDocks;i++)
{
arrayD=calloc(shipyard2.numOfDocks,100); // allocate a new bit of memory for arrayD
tempo.dockCode=1234*i;
tempo.dockLength=1200*i;
arrayD[i]=tempo; //the element of arrayD becomes tempo.
}
shipyard2.run=arrayD; //make shipyard2.run point to the new location of arrayD.
int elementTest1; // need element1test to be shipyard1.run[0].dockLength;
int elementTest2; // need element2test to be shipyard2.run[1].dockCode;
return (EXIT_SUCCESS);
}
Il convient de noter que je l'ai laissé beaucoup de code parce que je n'ai pas encore écrire. J'ai utilisé des exemples statiques pour l'instant (shipyard1 et shipyard2) mais dans le futur je vais implémenter une fonction 'load info from file'.
Toute aide serait grandement appréciée et s'il vous plaît excusez mon anglais s'il est pauvre, l'anglais n'est pas ma langue maternelle.
Pourquoi déclarez-vous struct typedefs dans le corps de votre fonction principale? –
... et pourquoi déclarez-vous un typedef et ne l'utilisez pas? –
J'ai pris tous les commentaires et mis à jour mon code mais je ne sais toujours pas comment récupérer les valeurs des pointeurs shipyard.run. Par exemple, j'ai besoin d'obtenir la valeur dans shipyard1.run [0] .dockLength et shipyard2.run [1] .dockCode. J'ai essayé de faire 'elementTest1 = shipyard1.run [0] .dockLength;' mais j'ai une erreur ': erreur de déréférencement du type incomplet' dans la compilation. –