C++ 修改函数内部的字符
c++ modify char inside function
我创建了一个函数来使用 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);
更新:同样strftime
将char*
作为第一个参数,但您传递char**
strftime(*datetime, 64, "%m/%d/%Y %H:%M:%S", &data);
没有进一步测试的 Id 说它是因为您需要取消引用您的"引用指针"。
您的日期时间显示为"指向字符[]的指针",然后您尝试打印到指针而不是字符[]
相关文章:
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 我的字符计数代码计算错误.为什么
- 字符串-C++后显示的随机字符
- 将函数类成员映射到类本身内部
- 将Integer转换为4字节的unsined字符矢量(按大端字节顺序)
- 如何在C++中从字符串中分割字符
- 为什么msgrcv()将垃圾字符馈送到缓冲区
- 指向指向字符数组的指针数组的指针
- 如何用转义符替换字符串中的所有特殊字符
- "std::string"是否将其字符作为签名字符在内部存储?
- 在函数内部传递字符 *str
- C++ 修改函数内部的字符
- 内部字符串/字符如何在 int 和 float 中存储
- 如何谷歌奇怪的字符,例如"~"内部问题,例如在构造函数之前的 c++ 中这意味着什么?
- C99:内部名称的 63 个字符很重要
- 内部名称的前 31 或 63 个字符至少很重要
- 是否存在编解码场景,其中目标缓冲区需要多个内部字符的空间
- 在VC++中,将常量字符赋给结构内部的字符数组