Я пытаюсь создать функцию для чтения кода Морзе из одного файла, конвертировать его в текст на английском языке, распечатать преобразованный текст на терминал и записать его в выходной файл. Вот грубый старт ...
#define TOTAL_MORSE 91
#define MORSE_LEN 6
Пытается преобразовать код Морзе на английский. Борьба
void
morse_to_english(FILE* inputFile, FILE* outputFile, char morseStrings[TOTAL_MORSE][MORSE_LEN])
{ int i = 0, compare = 0;
char convert[MORSE_LEN] = {'\0'}, *buffer = '\0';
//read in a line of morse string from file
// fgets(buffer, //then what?
while(((convert[i] = fgetc(inputFile)) != ' ') && (i < (MORSE_LEN - 1)))
{ i++;
}
if (convert[i + 1] == ' ')
convert[i + 1] = '\0';
//compare read-in string w/morseStrings
for (i = 48, compare = strcmp(convert, morseStrings[i]); //48 is '0'
i < (TOTAL_MORSE - 1) && compare != 0;
i++)
{ compare = strcmp(convert, morseStrings[i]);
}
printf("%c", (char)i);
}
Я инициализируется morseStrings коду Морзе. Это моя функция прямо сейчас. Это не работает, и я не совсем уверен, какой подход принять.
Мой первоначальный план алгоритм был что-то вроде этого:
1. Scan Morse code in from file, character by character, until a space is reached
1.1 save to a temporary buffer (convert)
2. loop while i < 91 && compare != 0
compare = strcmp(convert, morseString[i])
3. if (test ==0) print ("%c", i);
4. loop through this until eof
но .. я не могу думать о хорошем пути чтобы проверить, является ли следующий символ в файле пространством. Поэтому мне это очень сложно.
Я получил очень разочарован и гугл идей, и нашел предложение использовать этот алгоритм
- Читать линию
Loop
-strchr() для пространства или EOL - скопируйте символы перед пробелом в другую строку
-Используйте strcmp() и найдите петлю, чтобы найти письмо -Проверьте следующий символ для пробела.
-Если так, выход в другое пространство -Skip к следующему Морзе характераСписок пункт
ENDLOOP
Но это петли отчасти сбивает с толку. Я бы использовал fgets() (я думаю), но я не знаю, что добавить в аргумент длины.
В любом случае, я устал и разочарован. Я был бы признателен за любую помощь или понимание этой проблемы. При необходимости я могу предоставить больше кода.
Я думаю, вы имеете в виду ASCII, а не английский. Преобразование кода Морзе на английский язык может быть очень сложным, если исходное сообщение на французском языке, например. :-) –
Touché, хороший сэр. – Nate