我对此很陌生,并且只做了几个星期。虽然我已经用其他语言编程过,但我对声明类型、转换类型和指针的理解仍然很短。我昨天一整天都在尝试让这段代码正常工作,但不能!
我需要一个数组(字符或字符串)来保存锁定信息,然后能够将它作为字符串传递给电子邮件函数。如果我让一个部分工作,它会破坏下一部分。当前版本的代码如下所示:
char lockDetail [10][250];
String ts = timeStamp();
char reason [] = "Invalid login attemp " + ts + "other stuff I want to append";
strncpy(lockDetail [lockCount], reason, sizeof(reason) );
.
.
.
String msg = lockDetail [0] + "<p>" + lockDetail [1] + "<p>" + lockDetail [2];
sendMessage (subject, msg);
我按照 jcaron 的建议更新了我的代码,现在我遇到了与最初相同的问题 - 调用它时会崩溃/重新启动 ESP32。
更新代码:
String lockDetail [2];
int lockCount = 0;
String ts = timeStamp();
String reason = "Invalid login attemp " + ts + "other stuff I want to append";
lockDetail[lockCount] = String(reason);
.
.
String msg = lockDetail [0] + "<p>" + lockDetail [1] + "<p>" + lockDetail [2];
在进一步调查中,当我调用带有 msg = 到 msg 的 sendMessage 函数时发生崩溃,其中包括 lockDetail 数组。我正在使用mobizt/ESP-Mail-Client 库
void sendMessage(const char* subject, String msg)
所以崩溃: String msg = lockDetail [0] + "<p>" + lockDetail [1] + "<p>" + lockDetail [2];
没有崩溃: sendMessage ("subject", "My Message");
不确定这是否有帮助(它高于我目前的水平)。这是来自邮件库示例(也在我的代码中使用)。想知道 .c_str() 部分是否有数组问题(但现在我们创建的不是 msg 只是一个普通的普通字符串?)
String msg = "the message";
message.html.content = msg.c_str();
更多帮助表示赞赏,谢谢