Partage
  • Partager sur Facebook
  • Partager sur Twitter

{{Titre incorrect}} les fichiers

nouveau representation des fichiers

Sujet résolu
22 mai 2011 à 12:34:45

/* la structure de bloc et structure d'article */
ma question sur les fichiers :
je veux represente un fichier vu comme une liste linaire chaine en blocs (ces blocs sont chainee) chaque bloc contient plusieurs article (le nombre d'article variable pou chaque bloc )

typedef struct Tbloc *ptrBloc;
typedef struct Tarticle{
int cle;
int valeurQlq;
ptrBloc ptrTete;
char *chaineCarat;
}Tarticle;

typedef struct Tbloc{
int numberOfArticle; // nombre d'article dans le bloc
Tarticle *Article; // article de type Tarticle
ptrBloc suivant; // pointeur vers le prochain bloc dans le fichier
}bloc_pr;

le fichier et de type LȎVĈ ( liste non ordonnée variable non chevauchement )
les blocs sont chainées entre eux par des pointeur comme une liste linaire chainée
les articles non ordonnée de taille variable
non chevauchement ie: quant l'insertion ne fait pas le décalage dans le bloc
je veux réaliser les fonctions suivants (j'ai fais déjà mais je suis pas sur qui sont vraies )
/* les fonctions sont les suivantes : */
Ouvrir( f, nomfichier, mode )
pour ouvrir ou créer un fichier de nom 'nomfichier' selon la valeur de 'mode'
« a » : ouvrir un ancien fichier en lecture/écriture et charge ses caractéristiques en MC
« n » : créer un nouveau fichier en lecture/écriture et alloue une zone en MC pour ses
caractéristiques
Fermer( f )
ferme le fichier f, en sauvegardant ses caractéristiques sur disque
LireDir(F, i, buf )
lire dans 'buf' le contenu du bloc numéro 'i' du fichier 'f' (num logique de blocs)
EcrireDir( F, i, buf )
écrit le contenu de la variable 'buf' dans le bloc numéro 'i' du fichier (num logique)
LireSeq(F, buf )
lire dans 'buf' le contenu du bloc courant du fichier 'f'. (lecture séquentielle)
EcrireSeq( F, buf )
écrit le contenu de la variable 'buf' dans le bloc courant du fichier (écriture séquentielle)
Entete( f, i )
retourne la valeur de la 'i'ème caractéristique du fichier 'f' (en MC)
Aff_entete( f, i, val )
affecte 'val' dans la 'i'ème caractéristique du fichier 'f' (en MC)
AllocBloc( f )
alloue un nouveau bloc au fichier et retourne son numéro

/* ma réalisation */
void ouvrirFichier(FILE *stream,const char *fileName,const char *openType){
if( openType == "a")
stream = fopen("fileName","br+");
else if (openType == "n")
stream = fopen("fileName","ba");
}
void fermerFichier(FILE *stream){
fclose(stream);
}
void lireDir(FILE *stream,int numberOfBloc,const void *buffer){
long numberOfOctet;
int succes_seek;
numberOfOctet = sizeof(bloc_pr) * numberOfBloc;
succes_seek = fseek(stream,numberOfOctet,SEEK_SET);
if( succes_seek == 0)
fread(&buffer,sizeof(bloc_pr),sizeof(bloc_pr),stream);
else if( succes_seek != 0)
exit(8);
}
void lireSeq(FILE *stream,const void *buffer){
fread(&buffer,sizeof(bloc_pr),sizeof(bloc_pr),stream);
}
void ecrireDir(FILE *stream,int numberOfBloc,const void *buffer){
int succes_seek;
long numberOfOctet;
numberOfOctet = sizeof(bloc_pr) * numberOfBloc;
succes_seek = fseek(stream,numberOfOctet,SEEK_SET);
if( succes_seek == 0 )
fwrite(&buffer,sizeof(bloc_pr),sizeof(bloc_pr),stream);
else if( succes_seek != 0 )
exit(8);
}
void ecrireSeq(FILE *stream,const void *buffer){
fwrite(&buffer,sizeof(bloc_pr),sizeof(bloc_pr),stream);
}
int finFichier(FILE *stream){
int end_file;
return ( end_file = feof(stream) );
}
int allocationBloc(FILE *stream){
ptrBloc bloc;
bloc = (ptrBloc) malloc(sizeof(bloc_pr));
return 0; // pour l'instant
}


après la réalisation de ces fonctions
il y a trois d'autre fonction a réalisé sont
recherche
insertion
suppression
(* fait d'abord les premiers merci *)

/* j'attente de votre aide */
merci beaucoup.

Je le mérite le plus tôt possible

  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2011 à 12:37:40

Les balises code s'il te plait <code type="c">/* Place ton code ici */ </code>
et l'indentation.
  • Partager sur Facebook
  • Partager sur Twitter
22 mai 2011 à 12:37:47

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Merci d'utiliser les balises de code


Bonjour,

Les forums du Site du Zér0 disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source.
Vous avez posté un code source sans utiliser cette fonctionnalité. Pourriez-vous éditer votre message afin d'ajouter ces balises ? Pour cela, sélectionnez votre code à colorer et utilisez le bouton Image utilisateur afin de choisir la coloration adaptée. Veillez à bien choisir le langage de programmation afin que la coloration soit pertinente.

De plus, veillez à ce que votre code soit correctement indenté.

Afin de ne pas surcharger le sujet, ne postez pas votre code coloré dans un nouveau message mais éditez le premier (grâce au bouton Image utilisateur).

Cela aura pour effet de "colorer" votre code et donc d'en faciliter grandement la lecture. Vous aurez ainsi beaucoup plus de chances d'avoir des réponses.

Voici un exemple de code non coloré (mauvais exemple) :

int main(int argc, char *argv[])
{
long choixOperation;

printf("Choisissez l'operation a effectuer");
/* etc. */
}

Voici maintenant le même code coloré, utilisant la balise "code" (bon exemple) :

int main(int argc, char *argv[])
{
    long choixOperation;

    printf("Choisissez l'operation a effectuer");
    /* etc. */
}


C'est plus clair n'est-ce pas ? ;)

Plus d'informations à ce sujet.

Merci de votre compréhension. :)
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »
22 mai 2011 à 12:37:54

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Description insuffisante du problème


Bonjour,

Le modérateur ayant posté ce message estime que vous n'avez pas donné assez d'informations quant à votre problème.
Afin de faciliter la tâche aux membres qui souhaitent vous aider, il vous est demandé de fournir les erreurs obtenues, ou d'expliquer le comportement inhabituel de votre script. Vous contenter de fournir votre code en disant « ça ne marche pas » n'est pas suffisant.
Le modérateur vous invite donc à éditer votre message afin de le clarifier.

Merci de votre compréhension. :)
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »
22 mai 2011 à 12:38:19

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Le titre du sujet est incorrect


Bonjour,



Ce sujet a un titre qui ne décrit pas correctement le sujet, ou le titre est en majuscules. Vous pouvez re-poster votre sujet en rectifiant ce point.

Voici quelques correspondances pour vous aider à choisir au mieux votre titre :



Merci de votre compréhension :)
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter
Pwaite.net > Transfert de crédit téléphonique et monétisation de site web                                                                                        « I am awesome »