begin process at 2012 05 30 06:27:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

REcuperer des donnée d'un fichier binaire vers une tableau de hachage


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

REcuperer des donnée d'un fichier binaire vers une tableau de hachage

jeudi 18 décembre 2003 à 17:56:15 | REcuperer des donnée d'un fichier binaire vers une tableau de hachage

whiteknight

Slt

j'ai des problemes avec ma fonction load qui me permet de recuperer les données d'un fichier binaire et de les transférer vers un tableau de hachages ... si qq'un trouve l'erreur ca serait sympa de me faire signe ... voila le code que j'ai pour le moment :

Dans liste.h

//============== INCLUDE =========================================================
#include <stdio.h>
#include <stdlib.h>

#ifndef liste_h
#define listeS_h

//============== DEFINE =========================================================
#define Max 50 // Nb d'element de la cle
#define Dim 3 // Nb d'element du tableau

// creation de la liste chainée

struct data
{
char cle[Max];
int rg;
struct data *suivant;
};

// Liste chainée
typedef data *liste;



// prototype

bool verif_chaine(char *chaine);
void main();
void free_memoire(liste head[]);
void save(liste tableau[]);
void affichage_id(liste hachage[],int id);
void load (liste tableau[]);
int hash(char *cle);
int rechercher(liste tableau[],char *chaine);
int ajout(char *cle,int valeur,int tmp,liste tableau[]);
//int ajout_elem(char *cle,liste tableau[]);

#endif

Dans fonction.cpp
//============== INCLUDE =========================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>

// Appel du Header liste.h
#include "liste.h"

// **************************************************************
// Fonction ajout()
// **************************************************************
// Données : Table de hachage
// Resultat : Retourne la liste
// Fonction : Ajout d'une donnée de type clées à la liste
// User : Menu
// Remarques :

int ajout(char *cle,int valeur,int tmp ,liste tableau[])
{
//
// Fonction ajout d'une clé
//

// Declaration des variables locales
liste nouveau=NULL;
liste maillequimaille=tableau[valeur]; // Liste chainée

// Allocation dynamique de mémoire

nouveau=(liste)malloc(sizeof(data));
if(nouveau!=NULL)
{
// On copie les données saisies dans la structure
strcpy(nouveau->cle,cle);
nouveau->rg=tmp;
// On vide l'emplacement suivant
nouveau->suivant=NULL;
// Test si la liste est vide
if (tableau[valeur]==NULL)
{
tableau[valeur]=nouveau;
}
else
{
while(maillequimaille->suivant!=NULL)
{
// On positionne maillequimaille sur l'emplacement suivant
maillequimaille=maillequimaille->suivant;
}
// On positionne la tête de nouveau sur l'emplacement suivant
// de maillequimaille
maillequimaille->suivant=nouveau;
}
}
else
{
// Retourne le message d'erreur
printf("Erreur, Memoire Pleine !!");
system("pause");
}
// Incremente la variable globale
// contenant le rang d'un element
tmp++;
// Retourne le rang
return tmp;
}

// **************************************************************
// Fonction load()
// **************************************************************
// Données : Table de Hachage
// Resultat :
// Fonction : Charge la table de hachage depuis un fichier Binaire
// User : Menu
// Remarques :

void load(liste tableau[])
{
// Declaration des variables Locales
char nom[8];
int r=0,i=0;
int code=0;
FILE * entree;
liste temp=NULL;
// Initialisation
while (i<Max)
{
tableau[i]=NULL;
i++;
}
// Allocation de mémoire temporaire
temp=(liste) malloc(sizeof(data));

// Saisie nom de fichier
printf("Entrez un nom de fichier : ");
scanf("%s",&nom);

// Si le nom est supérieur à 8 caractère
if (strlen(nom)>8)
{
puts("8 Caractères Maximum !!!");
// Nouvelle saisie du nom
puts("Entrez un nom de fichier : ");
scanf("%s",&nom);
}
else
{
// Effectue le chargement
entree=fopen(nom,"rb");
if (entree==NULL)
{
// Affichage Message Erreur
perror("Erreur de Lecture ...");
// Sortie de la fonction
exit(0);
}
else
{
// Lis le fichier
fread(tableau,sizeof(data),1,entree);
while (!feof(entree))
{
// Ajoute un element et recupere son rang
r=ajout(temp->cle,hash(temp->cle),temp->rg,tableau);
}
}
// Ferme le fichier
fclose(entree);
}
}

// **************************************************************
// Fonction save()
// **************************************************************
// Données : Table de Hachage
// Resultat :
// Fonction : Sauvegarde la table de hachage dans un fichier Binaire
// User : Menu
// Remarques :

void save(liste tableau[])
{
// Declaration des variables Locales
char nom[8];
int i=0,j=0;
FILE * sortie;
printf("Entrez un nom de fichier : ");
scanf("%s",&nom);
// Si le nom est supérieur à 8 caractère
if (strlen(nom)>8)
{
puts("8 Caractères Maximum !!!");
puts("Entrez un nom de fichier : ");
scanf("%s",&nom);
}
else
{
// Effectue la sauvegarde
sortie=fopen(nom,"wb");
fwrite(tableau,sizeof(data),1,sortie);
fclose(sortie);
}
}

Whiteknight ... a B/X Shipper !


Cette discussion est classée dans : fichier, fonction, int, liste, tableau


Répondre à ce message

Sujets en rapport avec ce message

Tableau de structure [ par tomsawyerbelgique ] Bonjour suriez-vous me dire comment fait-on pour passer un tableau de structure dans une fonction:struct student { char nom[10]; int nbcot creer une fonction retournant un tableau [ par billcala ] j'essaie de créer une fonction qui doit initialiser un tableau d'entiers : le code que je fais est :int mafonction()[8];using namespace std;int mafonc tableau a double entrée alloué dynamiquement [ par amortlintelligence ] Voila j'aurais voulu utiliser un tableau (tableau de tableau) dans une fonction. Je pense qu'il faut donc que je le crée dynamiquement avec un code du Allocation dynamique dans une fonction [ par Veovis ] Salut,Toujours dans mon projet de TP, j'ai un petit soucis avec l'allocation dynamique dans une fonction. Ce que je voudrais faire c'est quand le tabl Fonction qui retourne un tableau [ par Kurul1 ] Bonjour à tous   J'ai une classe contenant un tableau a deux dimensions comme variable private  Ce que je voudrais c'est une fonction ayant pour param Tableau en C [ par Mickylord ] Bonsoir a tous !Voici ma question :J'ai une fonction principale, main(), et une autre fonction tab(). Je voudrais déclarer un tableau dans la fonction Appel d'une fonction contenue dans une dll [ par ybuchheit ] Bonjour, je souhaiterais appeler une fonction contenue dans une dll. Je n'ai pas le source de cette dll, le seul fichier dont je dispose est le .dll tableau d'entier. [ par gdpasmini ] Hello !j'ai un petit soucis avec une fonction qui renvoi un tableau en parametre... voila les details :Dans mes fonctions : int * boutonDecodFlux(void probleme dans une ecriture de fichier [ par hisoka56 ] bon salut a tous, j'ai un petit probleme d'ecriture dans un fichier dans uen fonction qui permet de sauvegarder un niveau voila le fichier de niveaux caractére d'un fichier dans un tableau [ par ender08450 ] /* En gros, ce que je voudrais faire: L'utilisateur rentre le nom d'un fichier texte, et le programme que j'essai de fairedois rentrer tous les caraté


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,042 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales