gpt4 book ai didi

c - 试图将摩尔斯电码转换为英语。挣扎

转载 作者:太空宇宙 更新时间:2023-11-04 04:07:21 28 4
gpt4 key购买 nike

我正在尝试创建一个函数来从一个文件中读取摩尔斯电码,将其转换为英文文本,将转换后的文本打印到终端,并将其写入输出文件。这是一个粗略的开始......
#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

但是.. 我似乎想不出一个好的方法来测试文件中的下一个字符是否为空格。所以这对我来说非常困难。

我非常沮丧并在谷歌上搜索想法,并找到了使用该算法的建议

  1. 读一行
  2. 循环

    -strchr() 用于 SPACE 或 EOL-复制空格前的字符到另一个字符串
    - 使用 strcmp() 并循环查找字母-测试下一个字符是否为空格。
    - 如果是,输出另一个空格-跳到下一个莫尔斯字符

  3. 列表项

结束循环

但是,这个循环有点令人困惑。我会使用 fgets()(我认为),但我不知道在长度参数中放入什么。

不管怎样,我很累,也很沮丧。对于此问题的任何帮助或见解,我将不胜感激。如有必要,我可以提供更多代码。

最佳答案

您的原始计划看起来不错。不过,当您检查缓冲区中的 ' ' 时,您就差了 1。它位于 convert[i],而不是 convert[i + 1]。当检测到空格时,循环内的 i++ 不会发生。

关于c - 试图将摩尔斯电码转换为英语。挣扎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4192345/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com