[Besoin d'aide]Projet en langage C : pointeurs et allocation mémoire
|
Thread Tools | Display Modes |
|
#3
|
||||
|
||||
Bon alors déjà j'apprécie la nature du post, interessante, bien menée et avec de la recherche, je vais donc t'aider un brin
![]() Il me semble que tu as réellement bien saisi la première partie du projet, l'allocation mémoire se faisant (selon moi et la rapide relecture que j'en ai fait) totalement correcte. Pour ce qui est de la seconde, je vais tenter d'éclairer un peu tes lanternes. Le type FILE est un type permettant de manipuler les fichiers (fantastique n'est ce pas) à l'aide des fonctions de manipulations des flux. Le reste des fonctions est pour le moins bien décris et il ne te reste qu'à mettre les phrases sous forme algorithmique, je vais néanmoins tâcher de te montrer rapidement la voie. Premièrement, l'ouverture du fichier texte contenant les valeurs des pixels qui suivent la structure, typiquement : Code:
FILE* ouvre(char* nomfichier){ FILE* f; if (f=fopen(nomfichier,"r")) //ouvre le fichier en lecture et retourne le pointeur return f; //else (gestion de l'erreur...); //traitement éventuel de l'erreur d'ouverture... } C'est donc là que tu dois faire appel à la mystérieuse fonction fgets, puis extraire la valeur présente apres le deuxieme espace de la premiere ligne. Cette valeur (qui est alors encore une chaine) doit subir un passage par atoi pour retourner l'entier qui te servira à instancier ta structure de données... pas simple, on va voir ca : Code:
//methode lisant le fichier ouvert au préalable et retournant le nombre d'élément int nbElem(FILE* f){ char temp[64]; char resultat[25]; int pos=0 ,compt=0, i=0; //je considere qu'on vient d'ouvrir le fichier, sinon ca merde... fgets(temp, 64, f); while (temp[i]!=0){ if (compt=-1) //si on est arrivé au chiffre resultat[pos++]=temp[i]; //on recopie chaque chiffre dans le resultat pour l'atoi if (temp[i]==' ') { //compte le nombre d'espace compt++; if (compt==2) compt=-1; //arrivé au deuxieme, passage a -1 pour savoir qu'on est dans la lecture du chiffre } i++; } resultat[pos]=0; //termine la chaine return atoi(resultat); } Pour résumer, lecture de la premiere ligne du fichier préalablement ouvert, on parcours ce qu'on vient de lire caractère par caractère et on note chaque espace rencontré, après le deuxième espace rencontré on lit le nombre d'éléments, puis on retourne le résultat sous forme d'entier. (A noter qu'il est plus facile de faire tout ca en utilisant les fonctions sur les Strings mais je ne sais pas si tu y as droit, je ne veux donc pas te compliquer...) Ensuite pour l'ajout des données correspondant aux bords droit et gauche, tu appliques une methode sensiblement similaire en ajoutant le premier chiffre lu sur ton fils gauche et l'autre sur le fils droit. Un parcours de l'ensemble du fichier est necessaire, a chaque espace tu changes l'affectation droite/gauche. N'oublies pas de fermer le fichier en fin et toucheras au but. J'espere que tout ceci t'auras éclairé, néanmoins j'avoue que j'ai fait ca un peu à l'arrache et que j'ai rien vérifié, si tu as d'autres question n'hésite pas a venir poster ici... Bon je retourne à ce datasheet de gniiii.... Last edited by Samva; 06-11-2005 at 23:47. |
Bookmarks |
«
Previous Thread
|
Next Thread
»
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Le point sur la mémoire DDR chez VTR-Hardware | Benjy | Actualité | 0 | 20-03-2005 19:58 |
Quel prix pour de la mémoire? | DERFFRED | Discussions | 5 | 28-01-2005 16:00 |
Memoire CAche d'un Athlon | inu974 | Matériel | 7 | 21-06-2004 10:55 |
Mémoire virtuelle et mémoire vive | Mockyl'ordi | Windows NT4/2000/XP Client | 2 | 06-01-2004 18:01 |
Mémoire | claude922 | Matériel | 10 | 29-10-2002 19:38 |
All times are GMT +2. The time now is 03:49.
Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.