gpt4 book ai didi

将莫尔斯字符串转换为字符数组

转载 作者:行者123 更新时间:2023-11-30 17:24:54 24 4
gpt4 key购买 nike

正如标题所述,该程序的目的是将一串莫尔斯电码(例如 .-/.-/.-)放入字符数组中。我相信我已经差不多了,但是我需要能够将 morsecat 设置为空,因为我相信程序无法正确运行的原因是 morsecat 不断地接收字符,并且在将 morsecat 中保存的内容转换为字符时,它发现 morsecat 太长并且无法转换它,因为它不匹配任何莫尔斯字符,因为它包含两个或多个莫尔斯字符而不是一个(这就是为什么 do while 循环存在的原因,因为“/”分隔每个莫尔斯字符)。我已附上我的代码,但如果您认为这就是它所需要的,请随时对其进行修改。任何帮助将不胜感激,因为这让我困惑了一段时间。

注意:我知道当您尝试验证代码时,它会给出错误“空字符常量”,因为我不知道如何重置 morsecat 的值以使其不包含任何内容。

以下程序的代码:

char * ip = ".-/.-/";
char buf[50];
int buflen;

char morse2char (char * m) {
if (strcmp(m, ".-") == 0) {
Serial.println("a");
}
else if (strcmp(m, "-...") == 0) {
Serial.println("b");
}
else if (strcmp(m, "-.-.") == 0) {
Serial.println("c");
}
else if (strcmp(m, "-..") == 0) {
Serial.println("d");
}
else if (strcmp(m, ".") == 0) {
Serial.println("e");
}
else if (strcmp(m, "..-.") == 0) {
Serial.println("f");
}
else if (strcmp(m, "--.") == 0) {
Serial.println("g");
}
else if (strcmp(m, "....") == 0) {
Serial.println("h");
}
else if (strcmp(m, "..") == 0) {
Serial.println("i");
}
else if (strcmp(m, ".---") == 0) {
Serial.println("j");
}
else if (strcmp(m, "-.-") == 0) {
Serial.println("k");
}
else if (strcmp(m, ".-..") == 0) {
Serial.println("l");
}
else if (strcmp(m, "--") == 0) {
Serial.println("m");
}
else if (strcmp(m, "-.") == 0) {
Serial.println("n");
}
else if (strcmp(m, "---") == 0) {
Serial.println("o");
}
else if (strcmp(m, ".--.") == 0) {
Serial.println("p");
}
else if (strcmp(m, "--.-") == 0) {
Serial.println("q");
}
else if (strcmp(m, ".-.") == 0) {
Serial.println("r");
}
else if (strcmp(m, "...") == 0) {
Serial.println("s");
}
else if (strcmp(m, "-") == 0) {
Serial.println("t");
}
else if (strcmp(m, "..-") == 0) {
Serial.println("u");
}
else if (strcmp(m, "...-") == 0) {
Serial.println("v");
}
else if (strcmp(m, ".--") == 0) {
Serial.println("w");
}
else if (strcmp(m, "-..-") == 0) {
Serial.println("x");
}
else if (strcmp(m, "-.--") == 0) {
Serial.println("y");
}
else if (strcmp(m, "--..") == 0) {
Serial.println("z");
}
else if (strcmp(m, "/") == 0) {
Serial.println(" ");
}
}
char * charstring2morsestring(char * ip, char * buf, int buflen){
char backslash = '/';
char * currentchar;
int i;
char morsecat[buflen];
//morsecat[0] = '\0';
char * temp;
for(i=0;i<strlen(ip);i++){


do {

*temp = ip;
strcat(morsecat, temp);
//Serial.println(morsecat);


} while (ip != '/');

if (ip == '/') {
*currentchar = morse2char(morsecat);
strcat(buf, currentchar);
morsecat[buflen] = ' ';
}





}


Serial.println(buf);
}










void setup(){
Serial.begin(9600);
//Serial.println(morse2char(".-"));
//Serial.println(morse2char("-..."));
//Serial.println(morse2char("--.."));
charstring2morsestring(".-/-.../--../.", buf, 50);

}


void loop(){


}

最佳答案

这看起来不像c代码。然而,从逻辑角度来看,首先你应该

  1. *temp = ip; 是错误的,也许你想要的是temp = ip;
  2. (ip != '/'); 您不能使用 == 进行字符串比较。使用strcmp() .
  3. *currentchar = morse2char(morsecat); 但我无法发现 morse2char() 返回任何内容。

并且您的代码中还有更多逻辑问题,例如无效的 do..while 循环等等。

关于将莫尔斯字符串转换为字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162890/

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