All pastes #597973 Raw Edit

Untitled

public text v1 · immutable
#597973 ·published 2007-06-30 23:33 UTC
rendered paste body
#include <stdio.h>
#include <ctype.h>
#include <string.h>

#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);  
}