makes the extension function more universal
This commit is contained in:
parent
b33e0e0519
commit
b6623bc0c8
1 changed files with 17 additions and 24 deletions
41
main.c
41
main.c
|
@ -6,11 +6,8 @@
|
||||||
// Affiche le message d'aide.
|
// Affiche le message d'aide.
|
||||||
void help(char const progName[]);
|
void help(char const progName[]);
|
||||||
|
|
||||||
// Ajoute l'extension du fichier compressé au fichier original.
|
// Change l'extension d'un fichier.
|
||||||
char *fichierHuff(const char *fichier);
|
char *fichierExtension(const char *fichier, char *extension);
|
||||||
|
|
||||||
// Ajoute une extension .txt au fichier décompressé en retirant, s'il existe, l'extension du fichier compressé
|
|
||||||
char *fichierTXT(const char *fichier);
|
|
||||||
|
|
||||||
int main(int argc, char const *argv[]) {
|
int main(int argc, char const *argv[]) {
|
||||||
/* Morceau de code qui m'a permis de testé `liste.c`
|
/* Morceau de code qui m'a permis de testé `liste.c`
|
||||||
|
@ -70,13 +67,13 @@ int main(int argc, char const *argv[]) {
|
||||||
|
|
||||||
printf("Compression de %s...\n", argv[1]);
|
printf("Compression de %s...\n", argv[1]);
|
||||||
|
|
||||||
char *nomFichierCompressee = fichierHuff(argv[1]);
|
char *nomFichierCompressee = fichierExtension(argv[1], ".huff");
|
||||||
FILE *sortie = fopen(nomFichierCompressee, "wb");
|
FILE *sortie = fopen(nomFichierCompressee, "wb");
|
||||||
compression(entree, sortie); // compression du fichier
|
compression(entree, sortie); // compression du fichier
|
||||||
|
|
||||||
fclose(entree); // fermeture du fichier de base
|
fclose(entree); // fermeture du fichier de base
|
||||||
fclose(sortie); // fermeture du nouveau fichier compressé
|
fclose(sortie); // fermeture du nouveau fichier compressé
|
||||||
free(nomFichierCompressee); // free du nom car on a utilisé malloc dans `fichierHuff`
|
free(nomFichierCompressee); // free du nom car on a utilisé malloc dans `fichierExtension`
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,13 +92,13 @@ int main(int argc, char const *argv[]) {
|
||||||
|
|
||||||
printf("Décompression de %s...\n", argv[2]);
|
printf("Décompression de %s...\n", argv[2]);
|
||||||
|
|
||||||
// char *nomFichierDecompressee = fichierTXT(argv[2]);
|
char *nomFichierDecompressee = fichierExtension(argv[2], ".txt");
|
||||||
FILE *sortie = fopen("tests/fichier_decompresse", "w");
|
FILE *sortie = fopen(nomFichierDecompressee, "w");
|
||||||
decompression(entree, sortie); // décompression du fichier
|
decompression(entree, sortie); // décompression du fichier
|
||||||
|
|
||||||
fclose(entree); // fermeture du fichier de base
|
fclose(entree); // fermeture du fichier de base
|
||||||
fclose(sortie); // fermeture du nouveau fichier compressé
|
fclose(sortie); // fermeture du nouveau fichier compressé
|
||||||
// free(nomFichierDecompressee); // free du nom car on a utilisé malloc dans `fichierTXT`
|
free(nomFichierDecompressee); // free du nom car on a utilisé malloc dans `fichierExtension`
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -119,7 +116,7 @@ void help(char const progName[]) {
|
||||||
printf("===============================================================================\n");
|
printf("===============================================================================\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
char *fichierHuff(const char *fichier) { /* peut posé problème lors de la décompression car on perd définitivement l'extension du fichier originale ? | ajouter un .txt a tous les fichiers sans extensions ?*/
|
char *fichierExtension(const char *fichier, char *extension) {
|
||||||
/*
|
/*
|
||||||
Récupération informations concernant la position
|
Récupération informations concernant la position
|
||||||
du dernier point et de la taille du nom du fichier.
|
du dernier point et de la taille du nom du fichier.
|
||||||
|
@ -132,41 +129,37 @@ char *fichierHuff(const char *fichier) { /* peut posé problème lors de la déc
|
||||||
}
|
}
|
||||||
|
|
||||||
char *resultat;
|
char *resultat;
|
||||||
if (positionDernierPoint != -1 && tailleNomFichier - positionDernierPoint <= 4) { // s'il y a une extension à la fin du fichier (c-à-d 4 lettres max après le dernier point dans le nom du fichier)
|
if (positionDernierPoint != -1 && tailleNomFichier - positionDernierPoint <= 5) { // s'il y a une extension à la fin du fichier (c-à-d 4 lettres max après le dernier point dans le nom du fichier [on compte le point])
|
||||||
int tailleNouveauFichier = tailleNomFichier - (tailleNomFichier - positionDernierPoint); // taille fichier sans extension
|
int tailleNouveauFichier = tailleNomFichier - (tailleNomFichier - positionDernierPoint); // taille fichier sans extension
|
||||||
|
|
||||||
char *fichierSansExtension;
|
char *fichierSansExtension;
|
||||||
if ((fichierSansExtension = malloc(tailleNouveauFichier * sizeof(char))) == NULL) { // variable du fichier sans son extension, exemple : `text.txt` devient `text` + gestion erreur
|
if ((fichierSansExtension = malloc(tailleNouveauFichier * sizeof(char))) == NULL) { // variable du fichier sans son extension, exemple : `text.txt` devient `text` + gestion erreur
|
||||||
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier compressé (1).\n");
|
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier avec une nouvelle extension (1).\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
for (int i = 0; i < tailleNouveauFichier; i++)
|
for (int i = 0; i < tailleNouveauFichier; i++)
|
||||||
fichierSansExtension[i] = fichier[i];
|
fichierSansExtension[i] = fichier[i];
|
||||||
|
|
||||||
if((resultat = malloc((tailleNouveauFichier + 5) * sizeof(char))) != NULL) { // +5 car .huff contient 5 caractères
|
if((resultat = malloc((tailleNouveauFichier + strlen(extension)) * sizeof(char))) != NULL) { // on ajoute la taille de l'extension car on va la rajouter au str
|
||||||
resultat[0] = '\0'; // pour être sur que le string est vide
|
resultat[0] = '\0'; // pour être sur que le string est vide
|
||||||
} else {
|
} else {
|
||||||
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier compressé (2-1).\n");
|
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier avec une nouvelle extension (2-1).\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
strcat(resultat, fichierSansExtension); // écrit le nom de l'ancien fichier sans son extension
|
strcat(resultat, fichierSansExtension); // écrit le nom de l'ancien fichier sans son extension
|
||||||
|
|
||||||
free(fichierSansExtension); // on free le malloc que l'on vient de faire
|
free(fichierSansExtension); // on free le malloc que l'on vient de faire
|
||||||
} else {
|
} else {
|
||||||
if((resultat = malloc((tailleNomFichier + 5) * sizeof(char))) != NULL) { // +5 car .huff contient 5 caractères
|
if((resultat = malloc((tailleNomFichier + strlen(extension)) * sizeof(char))) != NULL) { // on ajoute la taille de l'extension car on va la rajouter au str
|
||||||
resultat[0] = '\0'; // pour être sur que le string est vide
|
resultat[0] = '\0'; // pour être sur que le string est vide
|
||||||
} else {
|
} else {
|
||||||
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier compressé (2-2).\n");
|
printf("Erreur lors du malloc qui alloue de l'espace pour le nom du fichier avec une nouvelle extension (2-2).\n");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
strcat(resultat, fichier); // écrit le nom de l'ancien fichier complètement
|
strcat(resultat, fichier); // écrit le nom de l'ancien fichier complètement
|
||||||
}
|
}
|
||||||
|
|
||||||
strcat(resultat, ".huff"); // ajoute l'extension .huff
|
strcat(resultat, extension); // ajoute l'extension
|
||||||
|
|
||||||
return resultat;
|
return resultat;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* char *fichierTXT(const char *fichier) {
|
|
||||||
// TODO...
|
|
||||||
} */
|
|
||||||
|
|
Reference in a new issue