Sauvegarder et charger des objets dans un fichier. - C - Programmation
Marsh Posté le 22-02-2008 à 22:27:41
djobidjoba a écrit : quel est le problème ? |
Hmm, déjà, quand je vois ça :
Code :
|
Avec des champs contenants des "char *", c'est mal barré pour que ça fonctionne.
Révise ta notion des pointeurs, et de pourquoi il ne peuvent pas être écrit tel quel dans des fichiers.
Marsh Posté le 23-02-2008 à 09:06:46
tpierron a écrit : Hmm, déjà, quand je vois ça :
Avec des champs contenants des "char *", c'est mal barré pour que ça fonctionne. Révise ta notion des pointeurs, et de pourquoi il ne peuvent pas être écrit tel quel dans des fichiers. |
Exact j'ai tout modifié avec des tableaux, je m'étais gourré de sens à l'origine (char[30] nom par exemple au lieu de char nom[30] à cause de JAVA >.< ).
Fin bref ça enregistre bien mais ça me rajoute pleins de caractères bizarres en plus de ce que je veux (Marrant ! C:\Programmes\ ›! ¸ uDê" ê kvì" $
þÿÿÿG$°wCProgrammes/Images $ åtv åtv$ Xë" =èkv
˜ë" ), comment faire pour les enlever ?
Marsh Posté le 23-02-2008 à 09:24:38
you failed
si ta structure contient des pointeurs qui eux même contiennent des données, les données vont pas magiquement se sauver. Il faut que tu écrive une fonction qui sérialise récursivement ta structure.
Marsh Posté le 23-02-2008 à 11:43:44
Oui mais là, il récupère bien les champs comme je veux, donc je pense que c'est bon, ça à l'air de fonctionner xD
Marsh Posté le 23-02-2008 à 13:14:18
Angelfire54 a écrit : Oui mais là, il récupère bien les champs comme je veux, donc je pense que c'est bon, ça à l'air de fonctionner xD |
Dehors.
Mais nom de nom, quand est-ce que les gens comprendront que c'est pas parce que ca marche que c'est correct?
Marsh Posté le 23-02-2008 à 13:14:35
soit tu sauvegardes la taille réelle des chaines (strlen) soit tu sauvegardes le contenu entier de la variable. Dans le dernier cas, il y a des caractères après les fins de chaines qui étaient en mémoire lors de la déclaration.
lorsque que tu dis "il récupère bien les champs comme je veux", en fait tu devrais dire "il affiche bien les champs comme je veux" car ton printf affiche une chaine terminée par un caractère de fin de chaine.
si malgré tout tu souhaite avoir une sauvegarde sans caractères parasites, il faut initialiser tes champs avec des 0 (memset(th.nom,0,siseof(th.nom)))
Marsh Posté le 23-02-2008 à 14:56:38
Comment faire pour vérifier que theme[i] n'est pas nul et contient bien un thème ?
Parce que dans la fonction qui suit, tout est enregistrés même si theme[i] est nul :
void enregistrerConfig(Theme theme[]) {
FILE* f;
int t, i = 0;
f = fopen("Theme.txt","wb" );
while (i < 30) {
printf("%s", theme[i].nom);
fseek(f,i*sizeof(Theme),SEEK_SET);
fwrite (&theme[i],sizeof(Theme),1,f);
i++;
}
fclose(f);
}
Je dois rajouter if (theme[i] ... ??
Marsh Posté le 22-02-2008 à 19:18:40
Bonjour à tous
J'ai un problème qui commence sérieusement à m'énerver.
Je réalise actuellement un projet qui sert à modifier le thème usplash sur unix. Donc j'ai besoin d'une structure de type Thème.
Je vous mets ce que j'ai réalisé pour le moment.
Le .h :
Fonctions.c
Main.c
Je vous avoue que j'ai vraiment besoin d'aide