C++ 修改函数内部的字符

c++ modify char inside function

本文关键字:字符 内部 函数 修改 C++      更新时间:2023-10-16

我创建了一个函数来使用 c++ 从 esp32 中检索日期。但是它会导致错误。

看到几十个网站,但没有一个解决方案对我有用。如果提供代码,代码可以更改为更好的做法。

伊迪亚是。创建一个函数以在字符中返回日期时间。

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++ 代码的刚开始...因此,如果您解释并提供函数的代码以及如何调用它,我将不胜感激。

你应该先初始化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);
}
您需要

初始化dateTime指针。指针指向的位置没有分配datetime内存。 因此,当strftime尝试填充它时,它会崩溃。使用一些预定义的内存大小初始化它

char *datetime = new char(80); 
getCurrentDateTime(&datetime);

更新:同样strftimechar*作为第一个参数,但您传递char**

strftime(*datetime, 64, "%m/%d/%Y %H:%M:%S", &data);

没有进一步测试的 Id 说它是因为您需要取消引用您的"引用指针"。

您的日期时间显示为"指向字符[]的指针",然后您尝试打印到指针而不是字符[]