CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Tableau de pointeur de structure

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 17:14:51

Salut a tous, je code actuellement un petit jeu.

J'utilise le C.

Je suis malheureusement confronté a un problème.
Dans mon jeu, il y a des 'daemons', ils ont des caractéristiques.
Ces caractéristiques sont stockées dans une structure.
Je charge un 'daemons' depuis un fichier texte.

Dans le jeu, il y a 27 'daemons' a charger.
Je crée donc un tableau de type daemon :

Daemon** tabDaemon;

Voila le problème, je sais comment charger UN daemon depuis un fichier texte. Mais je ne sais pas comment en charger PLUSIEURS et les stocker dans mon tableau.

De plus, je voudrais les charger indépendamment :

un daemon = un fichier texte

Voila tout, j’espère que vous saurez me conseiller.

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 19:13:05

Met le code source sur pastebin qu'on voient ta technique pour charger le deamon

De ce que j'ai lus une simple boucle devrais suffire.

Deamon *tabDeamon[30];

for (i = 0; i < deamonCount; i++) {
   tabDeamon = loadDeamon(argument,argument,argument)
}

loadDeamon retournant un pointeur sur un objet Deamon.

Je pense qu'il y a de meilleure technique mais c'est la première qui me vient a l'esprit.

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 19:18:46

loadDeamon retournant un pointeur sur une structure Deamon*

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 19:29:04

Ok, merci, je vais essayer ça !

Je te tiens au courant.

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 19:35:03

Ah, j'oubliais, le plus gros de mon problème, c'est que je voudrais les charger avec un daemon par fichier texte, et je ne sais pas trop comment ouvrir un nouveau fichier a chaque tour de boucle.

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 19:47:19

tu ferme l'ancien et tu ouvre celui d'après ? fopen() fclose()

Si t'a juste besoin de stocké des valeur comme de la vie ou le port de connexions des truc du genre je te conseille plutôt de partir sur une bibliothèque spécialisé comme SimpleINI.

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 20:12:35

Ahh, ça ne marche pas, j'y arrive pas du tout.

Je post le code :

http://pastebin.com/32cLu73B

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 20:14:55

Je récupère le tableau depuis ma fonction de sauvegarde/chargementn ensuite, je lui alloue la taille dont j'ai besoin puis, je le remplis avec la boucle, je vois pas trop ce qui pose problème.

LEpigeon-888
LEpigeon-888
Niveau 12
17 juin 2013 à 20:18:01

Déjà il y a trop de malloc j'trouve, le seul utile c'est celui là "d=malloc(sizeof(Daemon*));" je pense :pf:

Aussi à la fonction loadDeamon tu devrais passer le numéro du deamon à charger :oui:

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:21:19

tu peut nous passer un exemple de fichier ?

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 20:23:00

Ah yes ! J'ai trouver ce qui clochait, mes malloc pour les tableaux allouaient des pointeurs et pas des tableaux !!

Au lieu de ça :

d->nom=malloc(sizeof(Uint16*));

il fallait mettre ça :

d->nom=malloc(sizeof(Uint16**));

@LEpigeon-888 -> merci, c'est grace a toi, tu as attiré mon attention sur le probleme de malloc !

@JusteImbiber -> merci de ton aide pour la boucle !

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:23:23

et je rejoins l'avis de pigeon :

d->nom=malloc(sizeof(Uint16*));
d->domaine=malloc(sizeof(Uint16*));
d->element=malloc(sizeof(Uint16*));
d->rang=malloc(sizeof(Uint16*));

autant le supprimer moins t'auras affaire avec les pointeurs moins t'auras de probleme

passe nous aussi deamon.h

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:25:27

d->nom=malloc(sizeof(Uint16**));

code spaguetti en puissance j'ai du mal a comprendre l'utilité autant faire un tableau de struct plutot qu'un struct avec des tableaux

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 20:26:36

Ah mince, faux espoir :(

J'avais pas appelé la fonction... :(

Bref, ca ne marche toujours pas.

voila daemon.h : http://pastebin.com/U5rAqPww

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:30:30

y'a aussi un probleme dans les fscanf :

fscanf(F,"%s",buf);
fscanf(F,"%s",d->nom);

la manipulation de fichier en C m'est un peu lointains mais je ne pense pas que cela puisse marcher.

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:32:39

Uint16** nom;
:hap: wat

Pseudo supprimé
Pseudo supprimé 17 juin 2013 à 20:39:30

Non, en C, c'est bien comme ça.

Et pour le Uint16** nom, c'est un tableau, mais non-initialisé.

C'est pour ça que je dois allouer de la mémoire comme ça :

d->nom=malloc(sizeof(Uint16**));

parce que le compilateur ne connais pas la taille du tableau nom au moment ou il compile, il ne connais la taille que lors de la lecture du fichier.
Si je n'alloue pas cette mémoire, le programme plante.

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 20:50:00

met un exemple de fichier daemon que je refasse tout ça

LEpigeon-888
LEpigeon-888
Niveau 12
17 juin 2013 à 21:06:06

Ah j'avais pas capté que c'était des tableau :pf: :hap:

Mais le 1er malloc "tabDaemon=malloc(nbDaemon*sizeof(Daemon*));" est quand même inutile, nan ? :(

Et Uint16** c'est un tableau à deux dimensions nan ?

JusteImbiber
JusteImbiber
Niveau 4
17 juin 2013 à 21:09:42

"Et Uint16** c'est un tableau à deux dimensions nan ?"

pour stocké du texte ? je pense que tu t'ai emmêler les pinceaux leouf faut pas jouer avec les pointeurs ça mord :hap:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment