Pile en C
Fermé
AviateurRex
-
1 oct. 2021 à 01:01
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 11 oct. 2021 à 14:51
[Dal] Messages postés 6198 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 13 décembre 2024 - 11 oct. 2021 à 14:51
A voir également:
- Warning: format ‘%d’ expects a matching ‘int’ argument [-wformat=]
- Pile carte mere - Guide
- Pile bios empêche démarrage pc ✓ - Forum Matériel & Système
- Pile manette wii - Forum Wii
- Piles de la manette wii ✓ - Forum Bureautique
- Démarrer PC sans pile ✓ - Forum Matériel & Système
24 réponses
J'ai bien essayé d'appliquer ce qui est sur le site : https://zestedesavoir.com/tutoriels/755/le-langage-c-1/1043_aggregats-memoire-et-fichiers/4279_structures/#2-structures-et-pointeurs
Mais vraiment je trouve rien qui marche.
J'ai essayé de voir comment partir de c pour "atterir" sur les infos de Element mais rien.
Et pour cette ligne là, pourquoi avoir rajouté des "cXXXX" avant chaque membre ?
Mais vraiment je trouve rien qui marche.
J'ai essayé de voir comment partir de c pour "atterir" sur les infos de Element mais rien.
printf("%s,0x%x,%s\n", cXXXXfirst_string, cXXXXinteger_value, cXXXXecond_string); }
Et pour cette ligne là, pourquoi avoir rajouté des "cXXXX" avant chaque membre ?
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
9 oct. 2021 à 16:44
9 oct. 2021 à 16:44
Si j'initialise c comme étant un pointeur sur une struct SCellule, comment recueillir par la suite des infos de type Element ?
Dans une variable de type Element, par exemple.
Dal
Dans une variable de type Element, par exemple.
Dal
J'ai vraiment bloqué toute la journée littéralement x). Je vois pas comment structurer ce que tu dis ici avec la variable c ou la variable c + une variable de type Element :
/* TODO: à partir de cette cellule (qui est un pointeur sur struct), * accéder au membre info de la cellule, qui est une struct de type * Element, et accéder à ses membres first_string, integer_value et * pour les afficher second_string */
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
9 oct. 2021 à 17:20
9 oct. 2021 à 17:20
écrire :
Oui c'est incorrect car on vient déclarer c comme étant de type struct SCellule * et c->info est de type Element.
Il te faut une variable de type Element pour y ranger un contenu de ce type.
C'est quand même la base, arrête de faire des choses au hasard.
c = c->infoest incorrect.
Oui c'est incorrect car on vient déclarer c comme étant de type struct SCellule * et c->info est de type Element.
/* RAPPEL DES TYPES PERTINENTS struct SCellule { Element info; struct SCellule *psuiv; }; typedef struct SCellule *Cellule; struct SPile{ struct SCellule *sommet; int nbElements; }; typedef struct SPile *Pile; Pile */
Il te faut une variable de type Element pour y ranger un contenu de ce type.
C'est quand même la base, arrête de faire des choses au hasard.
Oui je sais bien que c'est impossible d'écrire ça. C'est juste que je voyais pas comment accéder aux infos de type struct en partant de la variable c, comme tu l'as dis c'est en partant de cette cellule qu'on doit accéder à ces informations alors je ne voyais pas comment il fallait que je m'y prenne. Maintenant je sais que j'ai besoin de créer une variable Element comme
struct Element f=p->sommet->infomais je ne pourrais toujours pas l'utiliser avec c puisque leurs types sont différents.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
>
AviateurRex
Modifié le 9 oct. 2021 à 18:01
Modifié le 9 oct. 2021 à 18:01
Tu écris :
cependant
Par contre, tu peux écrire :
Vérifie que tu peux accéder aux données des membres.
(au passage pourquoi appeler un élément "f" ... je préfère "el" comme élément ou "e")
Dans mon exemple, je te propose de passer par une variable
qu'est-ce qui t'empêche de créer une variable de type Element pour y ranger le contenu du membre info de c ?
struct Element f = p->sommet->info;...
cependant
struct Elementn'est pas un type connu dans ton code, car tu as définit ton type struct sans étiquette à la suite un mot clef struct et en utilisant un alias typedef Element comme suit :
typedef struct { char *first_string; int integer_value; char *second_string; } Element;
Par contre, tu peux écrire :
Element f = p->sommet->info;et récupérer directement ces données.
Vérifie que tu peux accéder aux données des membres.
(au passage pourquoi appeler un élément "f" ... je préfère "el" comme élément ou "e")
Dans mon exemple, je te propose de passer par une variable
struct SCellule * coù tu ranges la cellule courante. Le but est de te faciliter la vie pour rendre ton code générique et utiliser cette variable pointeur pour y mettre l'adresse de la cellule suivante quand c'est ce que tu voudras faire...
/* je récupère la cellule qui est au sommet, un nom court comme c sera * pratique pour la suite ... jusqu'ici rien de difficile, non ? */ struct SCellule * c = p->sommet;
qu'est-ce qui t'empêche de créer une variable de type Element pour y ranger le contenu du membre info de c ?
AviateurRex
>
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
9 oct. 2021 à 18:00
9 oct. 2021 à 18:00
Pour la création de c, pas de soucis j'ai bien compris ce que tu as fait. Tu fais pointer c vers SCellule pour avoir accès au sommet.
qu'est-ce qui t'empêche de créer une variable de type Element pour y ranger le contenu du membre info de c ?
Je pense que c'est ça que je ne comprends pas, pour l'instant j'ai :
Et je dois mettre c dans mon Element f ?
qu'est-ce qui t'empêche de créer une variable de type Element pour y ranger le contenu du membre info de c ?
Je pense que c'est ça que je ne comprends pas, pour l'instant j'ai :
struct SCellule * c = p->sommet; Element f = p->sommet->info;
Et je dois mettre c dans mon Element f ?
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
>
AviateurRex
Modifié le 9 oct. 2021 à 18:09
Modifié le 9 oct. 2021 à 18:09
Oui, tu peux utiliser c à droite du signe égal après
Et tu peux aussi utiliser c pour accéder au membre psuiv qui te servira pour trouver le pointeur vers la cellule suivante.
Element f =pour accéder au membre info de la cellule, qui est de type Element (cela tombe bien, non ?).
Et tu peux aussi utiliser c pour accéder au membre psuiv qui te servira pour trouver le pointeur vers la cellule suivante.
AviateurRex
>
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
9 oct. 2021 à 18:15
9 oct. 2021 à 18:15
J'ai modifié Element f en Element el comme tu l'as dis.
J'ai donc :
C'est correct comme ça ?
Et pour le printf() je renseigne les modules comme el.first_string ... ou autrement ?
J'ai donc :
struct SCellule * c = p->sommet; Element el = p->sommet->info; Element el=c->info
C'est correct comme ça ?
Et pour le printf() je renseigne les modules comme el.first_string ... ou autrement ?