我想創建一個函數來從一個文件中讀取摩爾斯代碼,將其轉換爲英文文本,將轉換後的文本打印到終端,並將其寫入輸出文件。這裏有一個粗略的開始...
#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
但..我似乎無法想到一個好辦法以測試文件中的下一個字符是否爲空格。所以這對我來說非常困難。
我很沮喪,一派的想法,並找到了一個建議,使用這種算法
- 閱讀空間或EOL 線
環
-strchr() - 將空格前的字符複製到另一個字符串
- 使用strcmp()並循環查找字母 - 測試SPACE的下一個字符。
- 如果是這樣,輸出另一個空間 -Skip下一莫爾斯字符列表項
ENDLOOP
但是,這個循環是一種混亂。我會使用fgets()(我認爲),但我不知道要在length參數中放置什麼。
無論如何,我很累,很沮喪。我希望對此問題提供任何幫助或見解。如有必要,我可以提供更多代碼。
我想你是指ASCII,而不是英文。例如,如果原始郵件是法文的,那麼將摩爾斯電碼轉換爲英文可能會非常困難。 :-) – 2010-11-16 15:23:36
Touché,好的先生。 – Nate 2010-11-16 20:44:49