codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #define M_LEN 27 struct Morse { char code[6]; char letter; }; struct Morse morse[] = { {".-", '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'}, {"/", ' '}, }; char get_char(char *s) { int i; for (i = 0; i < M_LEN; i++) { if (!strcmp(morse[i].code, s)) return morse[i].letter; } return '*'; } const char * get_code(char c) { int i; for (i = 0; i < M_LEN; i++) { if (c == morse[i].letter) return morse[i].code; } return NULL; } void decode_msg(char *s) { char *w; w = strtok(s," "); while (w != NULL) { putchar(get_char(w)); w = strtok(NULL," "); } putchar('\n'); } void enclode_msg(char *s) { int i; // convert the input string to all upper case char *upper = malloc(sizeof(char) * strlen(s) + 1); for(i = 0; i < strlen(s); i++) upper[i] = toupper(s[i]); upper[i+1] = '\0'; for(i = 0; i < strlen(upper); i++) printf("%s ", get_code(upper[i])); putchar('\n'); free(upper); } int main(int argc, char **argv) { if (argc == 1 || argc > 3) { fprintf(stderr,"Usage: %s [-e] string\n",argv[0]); return 1; } else if (!strcmp(argv[1],"-e")) enclode_msg(argv[2]); else decode_msg(argv[1]); return 0; }
Private
[
?
]
Run code
Submit