Un pointeur est une variable qui contient une adresse. Il ne s'agit pas, comme tu as l'air de le penser, d'une structure. On ne peut y mettre qu'une valeur: l'adresse mémoire de quelque chose. Et encore, le quelque chose doit être du même type que le pointeur (exception faite pour void *, mais bon)
struct client {
char name[....];
char plaque[....];
....
};
void f(....) {
struct client client;
int *int_ptr;
int_ptr=&client; // bad
struct client *ptr_client;
ptr_client=&client; // ok
strcpy(ptr_client->name,"Jules");
strcpy(ptr_client->plaque,"CE-1293-SAR");
....
}
- Edité par edgarjacobs 1 mai 2023 à 20:55:49
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Du coup je dois initialisé le ou les pointeurs dans mon main ou dans ma fonction ? et qu'est ce que je met comme paramètre pour ma fonction, je suis vraiment perdu sur ce sujet j'ai vraiment du mal à comprendre, effectivement je n'ai aucun cours parce que je n'ai rien vu justement... Si vous pouviez me montrer les lignes que je dois m'être et les expliquer s'il vous plait... Et pour les lignes de code ci dessous, à la place de Jules je met par exemple ,
Du coup je dois initialisé le ou les pointeurs dans mon main ou dans ma fonction ?
Dans ton main, car tu devra revenir dessus quand tu sortiras du parking. Tu te fais une fixation sur un pointeur, mais ça pourrait être un client (struct client). Si c'est un pointeur, il devra pointer sur un client créé sur la pile ou sur le tas avec malloc.
C'est pas toi qui crée les pointeurs. Toi, tu écris une déclaration, qui conduit - lors de l'exécution du programme préalablement compilé - à réserver en mémoire de la place pour une donnée (Le pointeur) qui pourra contenir l'adresse d'une autre donnée (on dit qu'il pointe dessus). Ou NULL. Ou n'importe quoi si ce n'est pas initialisé.
> dans main et entrer_parking
Et ce pointeur, il servirait à pointer sur quoi ? Une ligne ? Un client (*)? Sa voiture ? Une place de parking ?
PS: avant de se précipiter à programmer, il faudrait d'abord définir un modèle de données qui établit les relations entre les diverses entités à propos desquelles on veut conserver des informations. Par exemple, je ne comprends pas dans le sujet ce qu'on veut conserver comme informations à propos des voitures qui sont sorties du parking.
(*) enfin, pas un client : une structure contenant des données représentant les informations que l'on veut mémoriser à propos d'un client.
J'ai prie la peine de créé un fichier csv pour tester (Quelqu'un t'en avais demandé un tu ne l'as pas donné).
J'ai changé la taille de la pile (j'aurais pu diminuer la taille du tableau qui fait un peu plus de 7Mo).
J'ai appelé les différentes fonctions pour les tester. (dans la fonction chercher_parking ça renvois l'indice du parking sélectionné donc si je choisi le premier ça renvois 0, mais 0 c'est ce que tu choisi pour quitter prématurément la fonction pour parking non trouvé, donc on ne peut pas sélectionner le premier).
J'ai crée un client mon_client et j'ai envoyé son adresse à la fonction entrer_parking.
Ici il y a qu'un seul client, dans la réalité il y en aura plusieurs.
Avec des champs "chaine" qui font systématiquement 1 Ko (MAX_CHARS), y compris pour mettre des dates qui tiendraient dans un entier 32 bits, (10000*année + 100*mois + jour) c'est pas étonnant que ça pète.
Normalement, l'intérêt de programmer en C, c'est de pouvoir utiliser efficacement les ressources dont on dispose : temps, espace, bande passante, etc... sinon, y a plus facile comme langage pour développer peinard des applications.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent