fs.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
char in[2000];
char out[2000];
char len[2000];
char mo[10000];
char *morse[128];
char ech[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_,.?";
void im()
{
morse['A'] = ".-";
morse['B'] = "-...";
morse['C'] = "-.-.";
morse['D'] = "-..";
morse['E'] = ".";
morse['F'] = "..-.";
morse['G'] = "--.";
morse['H'] = "....";
morse['I'] = "..";
morse['J'] = ".---";
morse['K'] = "-.-";
morse['L'] = ".-..";
morse['M'] = "--";
morse['N'] = "-.";
morse['O'] = "---";
morse['P'] = ".--.";
morse['Q'] = "--.-";
morse['R'] = ".-.";
morse['S'] = "...";
morse['T'] = "-";
morse['U'] = "..-";
morse['V'] = "...-";
morse['W'] = ".--";
morse['X'] = "-..-";
morse['Y'] = "-.--";
morse['Z'] = "--..";
morse['_'] = "..--";
morse[','] = ".-.-";
morse['.'] = "---.";
morse['?'] = "----";
}
int main(int argc, char **argv)
{
int rv, i, tl, cl, j;
char *op;
im();
while (1) {
op = mo;
for (i=0; i<tl; i++) {
//printf("ch %c %p\n", in[i], morse[in[i]]);
//puts(morse[in[i]]);
op += cl;
len[i] = cl;
}
out[tl] = 0;
op = mo;
for (i=0; i<tl; i++) {
//printf("%d", len[i]);
cl = len[tl-i-1];
for (j=0; ech[j]; j++) {
if (strlen(morse
[ech
[j
]]) != cl
) continue; if (strncmp(morse
[ech
[j
]], op
, cl
)==0) break; }
op += cl;
out[i] = ech[j];
}
}
return 0;
}