Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define MAX 65535
- void m2e(char[], int);
- void e2m(char[], int);
- int main(){
- unsigned char string[MAX];
- unsigned char c, d;
- int i;
- printf("EMC(English Morse Converter.) By 3issam\n\t-Send 1 for English to Morse\n\t-Send 2 for Morse to English\n\t-Send h for help\n\t-Send e to quit\n\n");
- for(c = 0; c != EOF;){
- printf("~\\");
- c = getchar();
- switch(c){
- case '1':
- getchar();
- printf("\nEnter the English text:\n\n-->");
- for(d = i = 0; (d = getchar()) != EOF && d != '\n' && i < MAX; i++)
- string[i] = d;
- string[i] = 0;
- printf("==>"); e2m(string, i); putchar('\n');
- break;
- case '2':
- getchar();
- printf("\nEnter the Morse text:\n\n-->");
- for(d = i = 0; (d = getchar()) != EOF && d != '\n' && i < MAX; i++)
- string[i] = d;
- string[i] = 0;
- printf("==>"); m2e(string, i); putchar('\n');
- break;
- case 'h':
- getchar();
- printf("\nThis is a simple program to convert morse code into english and vise versa.\n");
- printf("\n\tFor english to morse the program isn't case sensitive.");
- printf("\n\tFor morse to english, words must be entered like this:\n");
- printf("\t\t.... . .-.. .-.. --- / .-- --- .-. .-.. -.. \n");
- printf("\t\t|___________________|^|____________________|\n");
- printf("\t\t word | word \n");
- printf("\t\t space \n\n");
- printf("With dash(-) for long beep and period(.) for small beep.\n\nHope it helps.\n\n");
- break;
- case 'e':
- return 0;
- break;
- case '\0':
- case '\n':
- break;
- default:
- printf("Unknown input, try again.\n");
- c = 1;
- break;
- }
- }
- }
- void e2m(char string[], int i){
- for(i = 0; string[i] != 0; i++){ //pretty simple here: take letter and see what it is.
- switch(string[i]){
- case 'a':
- case 'A':
- printf(".- ");
- break;
- case 'b':
- case 'B':
- printf("-... ");
- break;
- case 'c':
- case 'C':
- printf("-.-. ");
- break;
- case 'd':
- case 'D':
- printf("-.. ");
- break;
- case 'e':
- case 'E':
- printf(". ");
- break;
- case 'f':
- case 'F':
- printf("..-. ");
- break;
- case 'g':
- case 'G':
- printf("--. ");
- break;
- case 'h':
- case 'H':
- printf(".... ");
- break;
- case 'i':
- case 'I':
- printf(".. ");
- break;
- case 'j':
- case 'J':
- printf(".--- ");
- break;
- case 'k':
- case 'K':
- printf("-.- ");
- break;
- case 'l':
- case 'L':
- printf(".-.. ");
- break;
- case 'm':
- case 'M':
- printf("-- ");
- break;
- case 'n':
- case 'N':
- printf("-. ");
- break;
- case 'o':
- case 'O':
- printf("--- ");
- break;
- case 'p':
- case 'P':
- printf(".--. ");
- break;
- case 'q':
- case 'Q':
- printf("--.- ");
- break;
- case 'r':
- case 'R':
- printf(".-. ");
- break;
- case 's':
- case 'S':
- printf("... ");
- break;
- case 't':
- case 'T':
- printf("- ");
- break;
- case 'u':
- case 'U':
- printf("..- ");
- break;
- case 'v':
- case 'V':
- printf("...- ");
- break;
- case 'w':
- case 'W':
- printf(".-- ");
- break;
- case 'x':
- case 'X':
- printf("-..- ");
- break;
- case 'y':
- case 'Y':
- printf("-.-- ");
- break;
- case 'z':
- case 'Z':
- printf("--.. ");
- break;
- case ' ':
- printf("/ ");
- break;
- case '-':
- case '.':
- printf("\nError: Morse code character detected, please note that dash(-) and period(.) are morse letters and invalid in this mode\n");
- break;
- default:
- printf("UNKNOWN: %c ---> ?\n", string[i]);
- }
- }
- return;
- }
- void m2e(char string[], int string_size){
- unsigned char morse_letter[MAX]; //this was supposed to only be 4 chars long, but it gave me a stack smahing error when executed, so I messed with it until
- //I made it the same size as string[], not sure why tho...
- int i, j;
- for(i = 0; string[i] != '\0' ;){ //from here to the first "i++" should copy all characters from string[] to morse_letter[] until the char
- for(j = 0; string[i] != ' '; j++) //copied is a space(' ').
- morse_letter[j] = string[i++];
- morse_letter[j] = '\0';
- i++;
- if(!strcmp(morse_letter, ".-")) //I wish there was a switch for strings.
- putchar('a');
- else if(!strcmp(morse_letter, "-..."))
- putchar('b');
- else if(!strcmp(morse_letter, "-.-."))
- putchar('c');
- else if(!strcmp(morse_letter, "-.."))
- putchar('d');
- else if(!strcmp(morse_letter, "."))
- putchar('e');
- else if(!strcmp(morse_letter, "..-."))
- putchar('f');
- else if(!strcmp(morse_letter, "--."))
- putchar('g');
- else if(!strcmp(morse_letter, "...."))
- putchar('h');
- else if(!strcmp(morse_letter, ".."))
- putchar('i');
- else if(!strcmp(morse_letter, ".---"))
- putchar('j');
- else if(!strcmp(morse_letter, "-.-"))
- putchar('k');
- else if(!strcmp(morse_letter, ".-.."))
- putchar('l');
- else if(!strcmp(morse_letter, "--"))
- putchar('m');
- else if(!strcmp(morse_letter, "-."))
- putchar('n');
- else if(!strcmp(morse_letter, "---"))
- putchar('o');
- else if(!strcmp(morse_letter, ".--."))
- putchar('p');
- else if(!strcmp(morse_letter, "--.-"))
- putchar('q');
- else if(!strcmp(morse_letter, ".-."))
- putchar('r');
- else if(!strcmp(morse_letter, "..."))
- putchar('s');
- else if(!strcmp(morse_letter, "-"))
- putchar('t');
- else if(!strcmp(morse_letter, "..-"))
- putchar('u');
- else if(!strcmp(morse_letter, "...-"))
- putchar('v');
- else if(!strcmp(morse_letter, ".--"))
- putchar('w');
- else if(!strcmp(morse_letter, "-..-"))
- putchar('x');
- else if(!strcmp(morse_letter, "-.--"))
- putchar('y');
- else if(!strcmp(morse_letter, "--.."))
- putchar('z');
- else if(!strcmp(morse_letter, "/"))
- putchar(' ');
- else;
- }
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment