我创建了一个函数,使用c ++从esp32中检索日期。但是,这会导致错误。
我看到了数十个站点,但没有解决方案对我有用。如果提供了代码,则可以将其更改为更好的做法。
思想是。 创建一个函数以char形式返回DateTime。
void getCurrentDateTime(char **datetime){
time_t tt = time(NULL);
data = *gmtime(&tt);
strftime(datetime, 64, "%m/%d/%Y %H:%M:%S", &data);
}
我以这种方式调用该函数。
char *datetime;
getCurrentDateTime(&datetime); // my function
代码可以编译,但会导致esp32设备崩溃...
我刚开始使用C ++代码...因此,如果您能解释并提供函数代码以及如何调用它,我将不胜感激。
答案 0 :(得分:2)
您应该首先初始化datetime
,然后将其作为char*
传递给函数。
#include <ctime>
void getCurrentDateTime(char* datetime){
time_t tt = time(NULL);
tm data = *gmtime(&tt);
strftime(datetime, 64, "%m/%d/%Y %H:%M:%S", &data);
}
int main() {
char datetime[64];
getCurrentDateTime(datetime);
}
答案 1 :(得分:0)
您需要初始化dateTime
指针。datetime
指针指向的位置没有分配的内存。因此,strftime
尝试填充时会崩溃。
使用预定义的内存大小对其进行初始化
char *datetime = new char(80);
getCurrentDateTime(&datetime);
更新:
也strftime
将char*
作为第一个参数,但是您正在传递char**
答案 2 :(得分:-1)
strftime(*datetime, 64, "%m/%d/%Y %H:%M:%S", &data);
无需进一步测试,请说出它的含义,因为您需要取消引用“引用指针”。
您的日期时间以“指向char []的指针”的形式出现,然后您尝试打印到指针而不是char []