c ++修改函数内部的char

时间:2019-06-11 06:27:49

标签: c++ pointers char

我创建了一个函数,使用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 ++代码...因此,如果您能解释并提供函数代码以及如何调用它,我将不胜感激。

3 个答案:

答案 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);

更新: 也strftimechar*作为第一个参数,但是您正在传递char**

答案 2 :(得分:-1)

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

无需进一步测试,请说出它的含义,因为您需要取消引用“引用指针”。

您的日期时间以“指向char []的指针”的形式出现,然后您尝试打印到指针而不是char []