|
Page : 1 2 Page Précédente | |
Auteur | Sujet : [c] enregistrement des noms des fichiers dans un tableau |
Publicité | Posté le 24-05-2004 à 10:20:57 |
Taz bisounours-codeur | et les allocations mémoires ? |
lordankou | oui en effet je l'ai oublié. mais justement je pense que mon problème vient en partie du fait que je n'arrive pas à visualiser vraiment ce que je dois programmer pour garder en mémoire mon tableau de nom de fichier.
--------------- |
Taz bisounours-codeur | avant de faire des strcpy quelque part, assure toi que la zone de destination est allouée et correctemet dimensionnée |
lordankou | j'ai édité le message pour mettre le code à jour. le problème est donc la déclaration de mon tableau. --------------- |
Taz bisounours-codeur | ton malloc est pas bon, et il manque toujours des allocations dans ta fonction |
lordankou | bah disons qu'avant de m'attaquer au reste je voudrais bien comprendre le début (c vraiment ça qui me bloque ensuite je trouverai par moi même je pense).
--------------- |
Taz bisounours-codeur | « ensuite je dois faire aussi à malloc dans ma fonction ParcoursFichier pour libérer de la mémoire ? »
|
lordankou | bon voila j'ai remodifié le code mais j'ai tjrs le prb de mon "tableau" (si c vraiment un tableau d'ailleurs).
--------------- |
Taz bisounours-codeur | peut être parce que sizeof(char) != sizeof(char*) ? |
Publicité | Posté le 24-05-2004 à 12:08:00 |
lordankou | en consultant le man, je viens de voir que malloc retourne un pointeur vers le début du bloc. --------------- |
lordankou | j'ai refait une partie du code avec une meilleure allocation de la mémoire (enfin je pense que c mieux). --------------- |
Taz bisounours-codeur | tu fais n'importe quoi .... t'as rien bité à rien, il te manque des allocations mémoires à des endroits, à d'autres tu en fais en écrasant tes paramètres ...
|
cricri_ | normal, tu recopies entree-> machin dans un truc non alloué ...
Message édité par cricri_ le 24-05-2004 à 15:08:47 |
cricri_ | Houlala !!! t'as encore modifié des trucs mais ce n'est tjs pas bon !
|
Taz bisounours-codeur | z'en avait pas marre de faire des malloc avec des tailles statiques ? |
lordankou | j'ai remodifié le programme (encore)...
--------------- |
lordankou | bah euh c static pour l'instant mais après je le mettrai dans mon prog en mettant des variables après
--------------- |
cricri_ | si ça l'amuse ...
|
lordankou | bon voila modifié encore et encore... et ça marche presque (vais finir par être heureux à la fin de la journée).
--------------- |
cricri_ | pas bon : strcpy(TabFichier[0],entree->d_name); |
lordankou | en effet à force de faire des copier coller j'avais oublier de corriger. c fait lol de même que l'allocation dans la boucle pas bête ça !
--------------- |
Taz bisounours-codeur | utilise un tableau comme je t'ai dit, comme ça basta les allocations |
cricri_ | TabFichier[i] = malloc(sizeof(entree->d_name)); |
lordankou | bah franchement je préférerais ne serait ce que pour la simplicité du code mais le problème c que déjà mon jury de stage je les supportent pas et vice versa alors si je fais en plus un truc pas optimisé aie aie aie
--------------- |
lordankou | strlen va me retourner la longueur de la chaine tandis que sizeof va retourner directement la taille. comme ça si je dois changer de type de variables ça posera pas de prb --------------- |
cricri_ | si tu passes &NomTabFichier, c'est donc un char *** dans ta fonction, il te faut alors travailler avec *NomTabFichier |
lordankou | dernier petit problème.
--------------- |
cricri_ | hmm .. sizeof c'est la taille de la variable ...
|
cricri_ | bon, j'ai fais un truc rapide, pas avec des fichiers mais de simples chaines de caractères :
|
cricri_ | et .. fl^te j'ai oublié les free()
|
lordankou | mici ça marche niquel. Message édité par lordankou le 25-05-2004 à 09:35:52 --------------- |
cricri_ | vi, Je pense, par contre ton free n'est pas suffisant, il faut également que tu libères les autres allocations, donc le mieux est d'initialiser ton tableau de pointeur à NULL, puis à la sortie tu fais une boucle qui scrute et libère tout ce qui est != NULL, et seulement après tu libère ton tableau de pointeur de char. |
lordankou | free libère l'espace pointé par le pointeur. donc si je fais free(NomTabFichier) je libère tout le tableau ou juste le pointeur pointant vers le tableau ? --------------- |
cricri_ | free(NomTabFichier) libère bien le tableau de pointeur, mais pas les chaines de caractères que tu as mis, donc il faut commencer par là
|
Taz bisounours-codeur |
ça j'attend encore de le voir |
cricri_ | Ah ? tu m'inquiètes là ...
|
Taz bisounours-codeur | parce que tu nommes mal les choses bordel |
cricri_ | ok ... c'est pas un tableau mais un bloc de mémoire .. |
Taz bisounours-codeur | comment tu veux qu'il comprenne quelquechose si dans le même phrase tu emploies pointeur et tableau pour parler de la même chose ... |
Publicité | Posté le |
Page : 1 2 Page Précédente |
Sujets relatifs | |
---|---|
une table de 325000 enregistrement | Enregistrement successifs dasn Access VB |
Access compter les enregistrement | lien pour ouvrir des fichiers .PDF |
Petit problème avec un transfert de tableau | ecrire un tableau dans un fichier |
[Access] Positionner un formulaire sur un enregistrement ...[Résolu] | Liste de fichiers |
Extends un tableau basique, c'est impossible ? | probleme upload de fichiers |
Plus de sujets relatifs à : [c] enregistrement des noms des fichiers dans un tableau |