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