Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
const char a[][] = { /* morse.c:5: error: array type has incomplete element type */
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X',
'Y', 'Z',
'1', '2', '3', '4', '5', '6', '7', '8', '9', '0',
' ',
".- ", "-.. ", "-.- ", "-.. ", ". ", "..-. ", "--. ", "....",
"..", ".--- ", "-.- ", ".-.. ", "-- ", "-. ", "--- ", ".--. ",
"--.- ", ".-. ", "... ", "- ", "..- ", "...- ", "...- ",
".-- ", "-..- ", "-.-- ", "--.. ",
".---- ", "..--- ", "...-- ", "....- ", "..... ", "-.... ",
"--... ", "---.. ", "----. ", "----- ",
" "
};
void convert(char [], int);
int set_ary_num(int, int);
void help(char []);
main(int argc, char *argv[]) {
if (argc < 3 || strstr(argv[1], "-h") != NULL) {
help(argv[0]);
exit(1);
}
if (strstr(argv[1], "-e") != NULL) {
convert(argv[2], 0);
} else if (strstr(argv[1], "-m") != NULL) {
convert(argv[2], 1);
} else {
fprintf(stderr, "unkown option: %s\n\n", argv[1]);
help(argv[0]);
exit(1);
}
}
void convert(char s[], int mode) {
int i = 0, j;
while (s[i] != '\0') {
j = 0;
while (s[i] != a[j]) {
j++;
}
j = set_ary_num(j, mode);
printf("%s", a[j+=35]);
i++;
}
}
int set_ary_num(int n, int mode) {
return (mode == 0) ? (n += 35) : (n -= 35);
}
void help(char prog[]) {
fprintf(stderr, "usage: %s [options] [string]\n"
"options:\n\t-e\tenglish to morse\n"
"\t-m\tmorse to english\n\t-h\tprint this\n",
prog);
}