S'assure que les informations de débogage vont dans stderr

This commit is contained in:
Mattéo Delabre 2016-11-19 14:58:55 +01:00
parent bd0c0afd89
commit aa63afb9d8
2 changed files with 24 additions and 26 deletions

View File

@ -6,15 +6,14 @@
typedef struct HufTree HufTree;
/**
* Écrire sur la sortie standard à la manière de printf,
* seulement si le mode verbeux est actif
* Écrire des données de débogage sur la sortie d'erreurs standard
* (seulement si le mode verbeux est actif)
*/
void printVerbose(const char* format, ...);
/**
* Active ou désactive l'affichage des messages verbeux
* (mode verbeux). Si activé, `printVerbose` écrit sur
* la sortie standard. Sinon, `printVerbose` n'a pas d'effet
* Active ou désactive l'affichage des messages de débogage (mode verbeux)
* sur la sortie d'erreurs standard
*/
void setVerbose(int);
@ -24,8 +23,7 @@ void setVerbose(int);
int isVerbose();
/**
* Afficher sur la sortie standard l'arbre passé
* en paramètre
* Afficher sur la sortie standard l'arbre passé en paramètre
*/
void printTree(HufTree tree);

View File

@ -32,7 +32,7 @@ void printVerbose(const char* format, ...) {
va_list args_list;
va_start(args_list, format);
vprintf(format, args_list);
vfprintf(stderr, format, args_list);
va_end(args_list);
}
}
@ -57,12 +57,12 @@ void _printVertex(HufVertex vert, wchar_t* buffer, int length) {
if (vert.child_l != NULL && vert.child_r != NULL) {
// Affichage d'un sommet avec enfants, on montre
// la probabilité somme des enfants
printf("\n");
printVerbose("\n");
// Affichage du fils gauche. Augmentation du préfixe
// pour l'affichage des enfants du fils gauche
buffer[length] = '\0';
printf("%ls├── ", buffer);
printVerbose("%ls├── ", buffer);
buffer[length] = L'';
buffer[length + 1] = ' ';
@ -74,14 +74,14 @@ void _printVertex(HufVertex vert, wchar_t* buffer, int length) {
// Affichage du fils droite. Augmentation du préfixe
// pour l'affichage des enfants du fils droit
buffer[length] = '\0';
printf("%ls└── ", buffer);
printVerbose("%ls└── ", buffer);
buffer[length] = ' ';
_printVertex(*vert.child_r, buffer, length + 4);
} else {
// Affichage d'une feuille de l'arbre, correspondant
// à un caractère du corpus
printf("%c\n", _safeChar(vert.name));
printVerbose("%c\n", _safeChar(vert.name));
}
}
@ -97,44 +97,44 @@ int _maxDepth(HufVertex vert) {
}
void printFrequenciesTable(double* table, size_t size) {
printf("┌─┬────┬─────────┐\n");
printf("│C│code│fréquence│\n");
printf("├─┼────┼─────────┤\n");
printVerbose("┌─┬────┬─────────┐\n");
printVerbose("│C│code│fréquence│\n");
printVerbose("├─┼────┼─────────┤\n");
double sum = 0;
for (size_t i = 0; i < size; i++) {
if (table[i] != 0) {
printf("│%c│%4d│%9.4lf│\n", _safeChar(i), (int) i, table[i]);
printVerbose("│%c│%4d│%9.4lf│\n", _safeChar(i), (int) i, table[i]);
sum += table[i];
}
}
printf("├─┴────┼─────────┤\n");
printf("│ Total│%9.4lf│\n", sum);
printf("└──────┴─────────┘\n");
printVerbose("├─┴────┼─────────┤\n");
printVerbose("│ Total│%9.4lf│\n", sum);
printVerbose("└──────┴─────────┘\n");
}
void printLabelsTable(char** table, size_t size) {
printf("┌─┬────┬────────────────┐\n");
printf("│C│code│ étiquette│\n");
printf("├─┼────┼────────────────┤\n");
printVerbose("┌─┬────┬────────────────┐\n");
printVerbose("│C│code│ étiquette│\n");
printVerbose("├─┼────┼────────────────┤\n");
double total_length = 0;
size_t label_count = 0;
for (size_t i = 0; i < size; i++) {
if (table[i] != 0) {
printf("│%c│%4d│%16s│\n", _safeChar(i), (int) i, table[i]);
printVerbose("│%c│%4d│%16s│\n", _safeChar(i), (int) i, table[i]);
total_length += strlen(table[i]);
label_count++;
}
}
printf("├─┴────┴───┬────────────┤\n");
printf("│Long. moy.│%12.4lf│\n", total_length / label_count);
printf("└──────────┴────────────┘\n");
printVerbose("├─┴────┴───┬────────────┤\n");
printVerbose("│Long. moy.│%12.4lf│\n", total_length / label_count);
printVerbose("└──────────┴────────────┘\n");
}
char _safeChar(char input) {