fixing all the warnings
This commit is contained in:
parent
80b4867243
commit
21f8173d86
2 changed files with 21 additions and 18 deletions
36
arbre.c
36
arbre.c
|
@ -113,41 +113,41 @@ void enteteVersFichier(Entete *enteteListe, int nombreLettresDansFichier, int lo
|
||||||
}
|
}
|
||||||
|
|
||||||
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *enteteListe, int nombreLettresDansFichier) {
|
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *enteteListe, int nombreLettresDansFichier) {
|
||||||
int buffer = 0, tailleBuffer = 0;
|
int buffer = 0, tailleBufferActuelle = 0, sizeOfInt = sizeof(int) * 8; // *8 car "long unsigned int" d'après GCC
|
||||||
char lettre = 'a'; // initalisation pour éviter un warning
|
char lettre = 'a'; // initalisation pour éviter un warning
|
||||||
while (lettre != EOF) {
|
while (lettre != EOF) {
|
||||||
lettre = fgetc(entree);
|
lettre = fgetc(entree);
|
||||||
Entete *entete = NULL; // rappel: entete représente une liste de caractères
|
Entete entete = recuperationLettre(lettre, enteteListe, nombreLettresDansFichier); // rappel: entete représente une liste de caractères
|
||||||
for(int i = 0; i < nombreLettresDansFichier; i++)
|
if (tailleBufferActuelle + entete.longueur >= sizeOfInt) { // écriture dans le fichier
|
||||||
if(enteteListe[i].lettre == lettre) {
|
|
||||||
entete = &enteteListe[i];
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (entete == NULL) {
|
|
||||||
printf("Incohérence entre l'entête généré et le fichier...");
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
if (tailleBuffer + (*entete).longueur >= sizeof(int)) { // écriture dans le fichier
|
|
||||||
// Modification du buffer
|
// Modification du buffer
|
||||||
int aAjouter = sizeof(int) - tailleBuffer;
|
int aAjouter = sizeOfInt - tailleBufferActuelle;
|
||||||
buffer <<= aAjouter;
|
buffer <<= aAjouter;
|
||||||
|
|
||||||
// Ajout de la lettre
|
// Ajout de la lettre
|
||||||
int tmp = (*entete).code >> ((*entete).longueur - aAjouter);
|
int tmp = entete.code >> (entete.longueur - aAjouter);
|
||||||
(*entete).longueur -= aAjouter;
|
entete.longueur -= aAjouter;
|
||||||
|
|
||||||
|
// Écriture dans le fichier ici
|
||||||
buffer |= tmp;
|
buffer |= tmp;
|
||||||
fwrite(&buffer, sizeof(int), 1, sortie);
|
fwrite(&buffer, sizeof(int), 1, sortie);
|
||||||
|
|
||||||
buffer = 0, tailleBuffer = 0; // reset du buffer
|
buffer = 0, tailleBufferActuelle = 0; // reset du buffer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (tailleBuffer > 0) {
|
if (tailleBufferActuelle > 0) {
|
||||||
buffer <<= sizeof(int) - tailleBuffer; // décalage vers la gauche
|
buffer <<= sizeOfInt - tailleBufferActuelle; // décalage vers la gauche
|
||||||
fwrite(&buffer, sizeof(int), 1, sortie);
|
fwrite(&buffer, sizeof(int), 1, sortie);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Entete recuperationLettre(char lettre, Entete *enteteListe, int nombreLettresDansFichier) {
|
||||||
|
for (int i = 0; i < nombreLettresDansFichier; i++)
|
||||||
|
if (enteteListe[i].lettre == lettre)
|
||||||
|
return enteteListe[i];
|
||||||
|
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
void decompression(FILE *entree, FILE *sortie) {
|
void decompression(FILE *entree, FILE *sortie) {
|
||||||
/* fclose temporaire pour supprimer les warnings */
|
/* fclose temporaire pour supprimer les warnings */
|
||||||
fclose(entree);
|
fclose(entree);
|
||||||
|
|
3
arbre.h
3
arbre.h
|
@ -51,4 +51,7 @@ void enteteVersFichier(Entete *enteteListe, int nombreLettresDansFichier, int lo
|
||||||
// Écrit les données une fois traduite après l'algorithme de Huffman dans le fichier de sortie.
|
// Écrit les données une fois traduite après l'algorithme de Huffman dans le fichier de sortie.
|
||||||
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *enteteListe, int nombreLettresDansFichier);
|
void huffmanVersFichier(FILE *entree, FILE *sortie, Entete *enteteListe, int nombreLettresDansFichier);
|
||||||
|
|
||||||
|
// Récupère les infos d'une lettre depuis l'entête
|
||||||
|
Entete recuperationLettre(char lettre, Entete *enteteListe, int nombreLettresDansFichier);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Reference in a new issue