Hola de nuevo, he probado eso (no pude sacar tiempos antes, lo siento) y ahora el código me queda tal cuál:
#include <stdio.h>
int main (){
char frase[30];
int i;
int e;
printf("\n\nTraductor de Código Morse/Castellano\n\n");
printf("1. Para traducir de castellano a morse\n2. Para traducir de morse a castellano");
scanf(" %i", &i);
switch (i)
{
case 1:
printf("Escriba la frase (máximo 30 caracteres) en castellano para su traducción al morse\n");
//scanf("%s", frase);
fgets(frase , 20, stdin);
e=0;
while( frase[e] != '\0'){
if(frase[e] == 'a' ){
printf( ".- ");
e++;
}
if(frase[e] == 'b'){
printf( "-... ");
e++;
}
if(frase[e] == 'c'){
printf( "-.-. ");
e++;
}
if(frase[e] == 'c'){
printf( "-.-. ");
e++;
}
if(frase[e] == 'd'){
printf( "-. ");
e++;
}
if(frase[e] == 'e'){
printf( ". ");
e++;
}
if(frase[e] == 'f'){
printf( "..-. ");
e++;
}
if(frase[e] == 'g'){
printf( "--. ");
e++;
}
if(frase[e] == 'h'){
printf( ".... ");
e++;
}
if(frase[e] == 'i'){
printf( ".. ");
e++;
}
if(frase[e] == 'j'){
printf( ".--- ");
e++;
}
if(frase[e] == 'k'){
printf( "-.- ");
e++;
}
if(frase[e] == 'l'){
printf( ".-.. ");
e++;
}
if(frase[e] == 'm'){
printf( "-- ");
e++;
}
if(frase[e] == 'n'){
printf( "-. ");
e++;
}
if(frase[e] == 'o'){
printf( "--- ");
e++;
}
if(frase[e] == 'p'){
printf( ".--. ");
e++;
}
if(frase[e] == 'q'){
printf( "--.- ");
e++;
}
if(frase[e] == 'r'){
printf( ".-. ");
e++;
}
if(frase[e] == 's'){
printf( "... ");
e++;
}
if(frase[e] == 't'){
printf( "- ");
e++;
}
if(frase[e] == 'u'){
printf( "..- ");
e++;
}
if(frase[e] == 'v'){
printf( "...- ");
e++;
}
if(frase[e] == 'w'){
printf( ".-- ");
e++;
}
if(frase[e] == 'x'){
printf( "-..- ");
e++;
}
if(frase[e] == 'y'){
printf( "-.-- ");
e++;
}
if(frase[e] == 'z'){
printf( "--.. ");
e++;
}
if(frase[e] == ' '){
printf( " ");
e++;
}
}
printf( "\n");
break;
}
}
Pero, cuando lo intento ejecutar ocurre esto:
$ ./morse
Traductor de Código Morse/Castellano
1. Para traducir de castellano a morse
2. Para traducir de morse a castellano1
Escriba la frase (máximo 30 caracteres) en castellano para su traducción al morse
qw
No traduce las letras, cuando con scanf si lo hacÃa, que hay mal?
Gracias de antemano.