#include #include #include #define MAX 1024 void tm(void),menu(void); int main(void) { while(1) { menu(); } return 0; } void menu(void) { int num; char s[20]; printf("1 - Converter texto para morse;\n"); printf("2 - Converter morse para texto;\n"); printf("3 - Converter texto para binario;\n"); printf("4 - Converter binario para texto.\n"); while (1) { printf("Opcao: "); fgets(s, 20, stdin); if ( sscanf(s, "%d", &num) != 1 ) continue; switch(num) { case 1: tm(); break; case 2: printf("Funcao nao implementada\n"); continue; case 3: printf("Funcao nao implementada\n"); continue; case 4: printf("Funcao nao implementada\n"); continue; default: printf("Opcao invalida\n"); continue; } } } void tm(void) { char *alfabeto = "abcdefghijklmnopqrstuvwxyz "; char morse[][5] = { ".-", "-...", "-.-.", "-..", ".", "..-.","--.","....", "..", ".---","-.-",".-..","--", "-.","---",".--.","--.-",".-.", "...","-","..-","...-",".--", "-..-","-.--","--.."," " }; char str[MAX], str2[MAX], *p; int i, j; str2[0] = '\0'; /* so pra garantir o funcionamento de strcat() */ printf("Entre com uma string: "); if ( fgets(str, MAX, stdin) == NULL ) { fprintf(stderr, "Voce ultrapassou o limite de caracteres permitidos nessa string\n"); fprintf(stderr, "Saindo do programa.\n"); menu(); } /* remover o newline que o fgets coloca na string */ if ( p = strchr(str, '\n') ) *p = 0; for (i = 0 ; str[i] ; i++) if ( strchr(alfabeto, tolower(str[i])) != NULL) { strcat(str2, morse[tolower(str[i])-'a']); strcat(str2, " "); } str2[strlen(str2)-1] = '\0'; printf("[%s] => [%s]\n\n", str, str2); }