Salve a tutti sto facendo un programma come da titolo, solo che nella seconda parte da Morse a italiano ho riscontrato un problema durante il passaggio del codice.
questo è il programma:
codice:
#include <stdio.h>
#include <string.h>
char *toMorse(char c);
char toIT(char *c);
int main()
{
int i;
char str[100];
printf("0 to Morse, 1 to IT\n");
scanf("%d",&i);
while(getc(stdin)!='\n');
printf("Inserire una frase da codificare/decodificare:\n");
fgets(str,100,stdin);
if(i==0) {
for(i=0;str[i]!='\n';i++) printf("%s ",toMorse(toupper(str[i])));
} else if(i==1) {
char *ptr;
ptr = strtok(str," ");
while(ptr!=NULL) {
printf("%c",toIT(ptr));
ptr = strtok(NULL," ");
}
} else {
printf("Scelta non valida!\n");
return 0;
}
printf("\n");
}
char *toMorse(char c)
{
switch(c) {
case ' ':
return " ";
break;
case 'A':
return ".-";
break;
case 'B':
return "-...";
break;
case 'C':
return "-.-.";
break;
case 'D':
return "-..";
break;
case 'E':
return ".";
break;
case 'F':
return "..-.";
break;
case 'G':
return "--.";
break;
case 'H':
return "....";
break;
case 'I':
return "..";
break;
case 'J':
return ".--";
break;
case 'K':
return "-.-";
break;
case 'L':
return ".-..";
break;
case 'M':
return "--";
break;
case 'N':
return "-.";
break;
case 'O':
return "--";
break;
case 'P':
return ".--.";
break;
case 'Q':
return "--.-";
break;
case 'R':
return ".-.";
break;
case 'S':
return "...";
break;
case 'T':
return "-";
break;
case 'U':
return "..-";
break;
case 'V':
return "...-";
break;
case 'W':
return ".--";
break;
case 'X':
return "-..-";
break;
case 'Y':
return "-.--";
break;
case 'Z':
return "--..";
break;
case '1':
return ".----";
break;
case '2':
return "..--";
break;
case '3':
return "...--";
break;
case '4':
return "....-";
break;
case '5':
return ".....";
break;
case '6':
return "-....";
break;
case '7':
return "--...";
break;
case '8':
return "--..";
break;
case '9':
return "----.";
break;
case '0':
return "----";
break;
}
}
char toIT(char *c)
{
if(c==" ") {
return;
} else if(c==" ") {
return ' ';
} else if(c==".-") {
return 'a';
} else if(c=="-...") {
return 'b';
} else if(c=="-.-.") {
return 'c';
} else if(c=="-..") {
return 'd';
} else if(c==".") {
return 'e';
} else if(c=="..-.") {
return 'f';
} else if(c=="--.") {
return 'g';
} else if(c=="....") {
return 'h';
} else if(c=="..") {
return 'i';
} else if(c==".--") {
return 'j';
} else if(c=="-.-") {
return 'k';
} else if(c==".-..") {
return 'l';
} else if(c=="--") {
return 'm';
} else if(c=="-.") {
return 'n';
} else if(c=="--") {
return 'o';
} else if(c==".--.") {
return 'p';
} else if(c=="--.-") {
return 'q';
} else if(c==".-.") {
return 'r';
} else if(c=="...") {
return 's';
} else if(c=="-") {
return 't';
} else if(c=="..-") {
return 'u';
} else if(c=="...-") {
return 'v';
} else if(c==".--") {
return 'w';
} else if(c=="-..-") {
return 'x';
} else if(c=="-.--") {
return 'y';
} else if(c=="--..") {
return 'z';
} else if(c==".----") {
return '1';
} else if(c=="..--") {
return '2';
} else if(c=="...--") {
return '3';
} else if(c=="....-") {
return '4';
} else if(c==".....") {
return '5';
} else if(c=="-....") {
return '6';
} else if(c=="--...") {
return '7';
} else if(c=="--..") {
return '8';
} else if(c=="----.") {
return '9';
} else if(c=="----") {
return '0';
}
}
il problema è nel seguente pezzo:
codice:
printf("%c",toIT(ptr));
se gli passo il puntatore nn funziona, se invece al posto di ptr provo a passargli il testo io con ad esempio ".-.." (L) funziona.da cosa dipende che non riesco a capire?grazie