1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| #include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *morse[55] = {".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.", "--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--..", "-----", ".----", "..---", "...--", "....-", ".....", "-....", "--...", "---..", "----.", ".-.-.-", "--..--", "..--..", ".----.", "-.-.--", "-..-.", "-.--.", "-.--.-", ".-...", "---...", "-.-.-.", "-...-", ".-.-.", "-....-", "..--.-", ".-..-.", "...-..-", ".--.-.", "...---..."};
const char *ascii[55] = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", ",", "?", "'", "!", "/", "(", ")", "&", ":", ";", "=", "+", "-", "_", "\"", "$", "@", "SOS"};
char * decode_morse(char *morse_);
void error_(const char *message);
int count_array(char *tocount);
int main(int argc, char *argv[])
{
char * return_ = decode_morse(".... . -.-- .--- ..- -.. .");
fprintf(stdout,"%s", return_);
return 1;
}
char * decode_morse(char *morse_)
{
int i= 0;
int y = 0 ;
char *decoded = strdup(morse_);
if(decoded)
{
int count = count_array(decoded);
char *token = strtok(decoded, " ");
char *array[count];
char *ret = malloc(sizeof(char) * count);
while(token != NULL)
{
array[i] = token;
i++;
token = strtok(NULL, " ");
}
for(i = 0; i < count; i++)
{
for(y = 0; y < 55; y++)
{
if(strcmp(array[i], morse[y]) == 0)
{
ret[i] = *ascii[y];
}
}
}
return ret;
}
else
error_("Strdup failed");
}
void error_(const char *message)
{
fprintf(stderr, "%s\r\n", message);
}
int count_array(char *tocount)
{
char *copy = strdup(tocount);
int i = 0;
if(copy)
{
char *token = strtok(copy," ");
while(token != NULL)
{
i++;
token = strtok(NULL, " ");
}
free(copy);
return i;
}
else
error_("Function failed");
} |
Partager