Select Git revision
morse.c 2.25 KiB
/*
- Auteur : Darius Gomes
- Date : 23.01.2025
- Description : Fichier qui gère les fonctions pour encoder et décoder
- Fichier : morse.c
*/
#include "morse.h"
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct node_t * createNode(char letter)
{
node_t* node = malloc(sizeof(node_t));
node->letter = letter;
node->right = NULL;
node->left = NULL;
return node;
}
struct node_t * createTree(char * path){
FILE *f = fopen(path, "r");
char buffer[7];
if (f != NULL) {
struct node_t* tree = createNode('*');
while (fgets(buffer, 7, f)) {
buffer[strcspn(buffer, "\r\n")] = 0;
char letter;
char code[6];
if (strlen(buffer) == 0) {
continue;
}
sscanf(buffer, "%c%[^\n]", &letter, code);
pushTree(tree, letter, code);
}
fclose(f);
return tree;
}
return NULL;
}
struct node_t * pushTree(struct node_t * tree, char letter, char * code){
if (code != NULL) {
if (code[0] != '\0') {
if (code[0] == '.') {
if (tree->left == NULL) {
tree->left = createNode('?');
}
return pushTree(tree->left, letter, code + 1);
}
else if (code[0] == '-') {
if (tree->right == NULL) {
tree->right = createNode('?');
}
return pushTree(tree->right, letter, code + 1);
} else {
printf("Erreur de format !!\n");
return NULL;
}
} else {
tree->letter = letter;
return tree;
}
} else {
return NULL;
}
}
char searchCodeTree(struct node_t * tree, char letter, char* code_out){}
struct node_t * encodeMorse(struct node_t * tree, char * path){}
void decodeMorse(struct node_t * tree, char * path){}
void printTree(struct node_t * tree, int depth){
if (tree == NULL) {
return;
}
printTree(tree->right, depth + 1);
for (int i = 0; i < depth; i++) {
printf(" ");
}
printf("%c\n", tree->letter);
printTree(tree->left, depth + 1);
}
void destroyTree(struct node_t ** tree){}