#include #include /* -.-.- Start Signal .-... Wait .-.-. End of Message (EOM) -.- Invitation to transmit ...-.- End of Work ...-. Understood/Acknowledge Other Morse signals used ..-.- Interrogatory ....-- Emergency silence ..-..- Executive follows ----- Break-in ...---... Emergency (SOS) -..-..-.. Distress signal relay */ int lowercase(char letter){ // lowercase = minúscula if(letter >= 'a' && letter <= 'z') return 1; else return 0; } int capitalletter(char letter){ // capital letter = majúscules if(letter >= 'A' && letter <= 'Z') return 1; else return 0; } int number(char letter){ //number = número if(letter >= '0' && letter <= '9') return 1; else return 0; } void startSignal(FILE *file){ fprintf(file,"-.-.- "); // Start Signal } void endMessage(FILE *file){ fprintf(file,".-.-. "); // End of Message (EOM) fprintf(file,"...-.- "); // End of Work } void convertToMorse(char character, char *dotdash){ char alphabet[25][6]={ ".- "/*A*/, "-... "/*B*/, "-.-. "/*C*/, "-.. "/*D*/, ". "/*E*/, "..-. "/*F*/, "--. "/*G*/, ".... "/*H*/, ".. "/*I*/, ".--- "/*J*/, "-.- "/*K*/, ".-.. "/*L*/, "-- "/*M*/, "-. "/*N*/, "--- "/*O*/, ".--. "/*P*/, "--.- "/*Q*/, ".-. "/*R*/, "... "/*S*/, "- "/*T*/, "..- "/*U*/, "...- "/*V*/, ".-- "/*W*/, "-..- "/*X*/, "--.. "/*Z*/}; char numbers[10][7]={ "----- "/*0*/, ".---- "/*1*/, "..--- "/*2*/, "...-- "/*3*/, "....- "/*4*/, "..... "/*5*/, "-.... "/*6*/, "--... "/*7*/, "---.. "/*8*/, "----. "/*9*/}; if(lowercase(character)) strcpy(dotdash,alphabet[character-'a']); else if(capitalletter(character)) strcpy(dotdash,alphabet[character-'A']); else if(number(character)) strcpy(dotdash,numbers[character-'0']); else switch(character){ case ' ' : strcpy(dotdash," "); break; case '.' : strcpy(dotdash,".-.-.- "); break; case ',' : strcpy(dotdash,"--..-- "); break; case '?' : strcpy(dotdash,"..--.. "); break; case '-' : strcpy(dotdash,"-....- "); break; case '=' : strcpy(dotdash,"-...- "); break; case ':' : strcpy(dotdash,"---... "); break; case ';' : strcpy(dotdash,"-.-.-. "); break; case '(' : strcpy(dotdash,"-.--. "); break; case ')' : strcpy(dotdash,"-.--.- "); break; case '/' : strcpy(dotdash,"-..-. "); break; case '\"' : strcpy(dotdash,".-..-. "); break; case '$' : strcpy(dotdash,"...-..- "); break; case '\'' : strcpy(dotdash,".----. "); break; case '\r': case '\n' : strcpy(dotdash,"\n.-.-.. "); break; case '_' : strcpy(dotdash,"..--.- "); break; default : strcpy(dotdash,"....... "); } } void main(int argc, char *argv[]){ FILE *fread, *fwrite; char car, morse[11]; if (argc == 3){ if((fread = fopen(argv[1],"r"))!=NULL){ if((fwrite = fopen(argv[2],"w")) != NULL){ startSignal(fwrite); while((car = fgetc(fread)) != EOF){ convertToMorse(car,morse); fprintf(fwrite,"%s",morse); } endMessage(fwrite); fclose(fwrite); }else perror(argv[2]); fclose(fread); }else perror(argv[1]); } }