#include <stdio.h>
#include <stdlib.h>
typedef struct
{
int size;
unsigned char *data;
} vector;
typedef struct
{
char id[1024];
vector *left;
vector *right;
} shred;
vector *vectorAllocate (int size)
{
vector *ptr = (vector*) malloc(sizeof(vector));
ptr->size=size;
ptr->data = (unsigned char*) malloc(ptr->size * sizeof(unsigned char));
return(ptr);
}
void vectorDestroy(vector *v)
{
free(v->data);
free(v);
}
shred* shredAllocate(int leftSize, int rightSize)
{
shred *ptr = (shred*) malloc(sizeof(shred));
ptr->left = vectorAllocate(leftSize);
ptr->right = vectorAllocate(rightSize);
return(ptr);
}
void shredDestroy(shred *s)
{
free(s->left);
free(s->right);
}
int main()
{
vector *tmp;
shred *tmp2;
tmp=vectorAllocate(1710);
tmp->data[2]=250;
tmp->data[1709]=10;
printf("\n %d , %d \n",tmp->data[2], tmp->data[1709]);
tmp2 = shredAllocate(1710,1710);
tmp2->left->data[0]=1;
tmp2->left->data[1]=2;
printf("\n %d , %d \n",tmp2->left->data[0], tmp2->left->data[1]);
vectorDestroy(tmp);
shredDestroy(tmp2);
return 0;
}
Reveur-ml a écrit:
Maintenant on passe à la phase suivante...
Et sincèrement , ce n'est pas juste difficile pour moi, c'est tout bonnement incompréhensible.
Un exemple tout bête: dans ce qui va suivre, le prof parler du type "FILE", mais qu'est-ce que c'est?
Quelque chose d'inclus dans les librairies, quelque chhose que je dois définir moi même?
Un autre: il ne précise pas combien de fonctions je dois coder en tout; tout cela est-il une seule grosse foction? Chaque point abordé est il une fonction? Je n'en ai aucune idée.
Je bloque complètement...des explications, des conseils, je vous en prie, me seraient Extrêmement utiles.
Voici donc la suite du projet (à noter que ce n'est loin d'être la fin...mais je préfère déjà me concentrer sur cette partie, plutôt que de m'étaler sur tout en même temps).
-----------------------------------------------------------------------
Vous allez écrire la fonction de lecture de données dans le fichier avec le prototype suivant:
shred* loadShred(char *fileName);
Cette fonction a comme unique paramètre le nom du fichier à charger, et retourne un pointeur sur la structure de données qu'il aura alloué (en appelant les fonctions précédemment définies) et rempli.
Pour pouvoir lire dans un fichier il faut l'ouvrir, lire les données puis le fermer, cela se fait grâce aux fonctions fopen, fgets, fclose de la librairie stdio (standart input output). La fonction fopen prend en paramètre le nom de fichier à ouvrir et ce que l'on veut en faire: lire ("r"ead) ou écrire ("w"rite). Elle retourne une valeur de type FILE c'est le descripteur de fichier qui idetifie le fichier que l'on est en train de manipuler. L'appel à cette fonction devrait donc ressembler à ça:
FILE *file;
file = fopen(fileName, "r");
Vous testerez que la variable file est différente de NULL pour vous assurer d'une bonne ouverture du fichier. Vous pouvez alors lire le contenu du fichier ligne à ligne grâce ç la fonction fgets dot le prototype est le suivant:
char * fgets(char * s, int size, FILE * steam);
Les paramètres sont, dans l'ordre: la chaîne de caractères qui contiendra ce qui est lu dans le fichier (c'est à vous de donner un pointeur vers une zone de mémoire allouée), le nombre d'éléments alloués pour la chaine de caractères, et enfin le descripteur de fichier sur lequel on veut effectuer la lecture.
La fonction fgets retourne NULL quand elle arrive en fin de fichier ainsi le code suivant permet d'afficher le contenu d'un fichier.
while(fgets(buffer, 1024, file))
printf("%s\n", buffer);
Où buffer est un tableau de char de 1024 éléments.
Pour en finir avec le fichier il faut le fermer cela se fait avec la fonction fclose que l'on applique sur le descripteur de fichier. Le nombre de fichiers ouverts en même temps est limité, il faut donc toujours bien penser à fermer les fichiers une fois qu'on a fini de s'en servir.
fclose(file);
Il vous faut maintenant manipuler ce buffer pour en extraire les informations voulues car les chiffres qu'il contient ne sont pas directement utilisables; en effet il ne s'agit pas de nombre mais d'une chaine de caractères représentant ce nombre. Une fonction de la "stdlib" nous permet de faire cette traduction:
int atoi(const char *nptr); // Ascii TO Integer
Elle prend en paramètre un pointeur sur le début de l'endroit où est écrit le nombre et retourne l'entier correspondant (le const signifie que cette fonction ne modifiera pas le contenu des valeurs pointées).
Pour finir, vous écrirez une fonction d'affichage:
void printShred(shred *s);
que vous appellerez dans le main pour finir de tester votre fonction loadShred en affichant les données chargées.
Conclusion:
A la fin de la séance, vous devriez avoir écrit un programme qui lit un fichier texte de description de bord de bandelette, alloue la mémoire nécessaire, met les données en mémoire, affiche les valeurs lues, puis désalloue la mémoire. Tout ceci sans erreur ni fuite mémoire.
Lors de la prochaine séance, nous fabriquerons une liste chaînée pour charger en mémoire plusieurs bandelettes, nous pourrons alors faire des comparaisons et commencer la reconstruction du document détruit.
----------------------------------------
Même si je saisis dans l'ensemble l'algorithme de cette partie du code, si quelqu'un pouvait se dévouer pour me le réexpliquer plus en détails, ne serait-ce que ça, m'aiderait Beaucoup.
Je vous remercie d'avance pour votre soutien (et j'en ai besoin).
Si certains points ne sont pas clairs, n'hésitez pas à me poser des questions, j'y répondrai au plus vite.
Sur ce, je vous remercie déjà d'avoir lu jusqu'ici mon message, mais aussi d'avance pour vos réponses.
Bonne soirée et bonne continuation.
Un élève en école d'inge, honteusement faible en C.
FILE *file;
file = fopen(fileName, "r");
while(fgets(buffer, 1024, file))
printf("%s\n", buffer);
fclose(file);
slice length 1710
252 252
252 252
252 246
237 252
Sujets Similaires: Découvrez aussi :
AchetezFacile (Comparateur de prix) -
JeuxVideo.fr -
Neteco -
Ozap -
Mobinaute -
JeuxVideo.TV (Emissions TV)
Echanges de Liens :
Allociné (Cinéma, VOD) -
Cityvox (Paris) -
Franchise Jeux Vidéo -
Boursier.com (Bourse Quotidien) -
Infobebes (Grossesse)
Culture Jeux (Encyclopédie) -
Webdistrib (Matériel Informatique) -
Locafilm (Location DVD) -
Pixmania (GPS Garmin) -
auFeminin (beauté, mode)
Sur cette page : d'aide Projet en langage C : pointeurs et : Bonjour à toutes et à tous, Si.... Mots Clefs : informatique, PC, hardware, matériel, jeux vidéo, multimédia, logiciel, téléchar....
