c - 将时间转换为格式化字符串;结果被截断
问题描述
我需要将变量转换为DD/MM/YYYY/HH:mmtime_t
格式的字符串。我做了以下功能。
int time_to_str(time_t value, char *string)
{
struct tm *timeinfo;
time(&value);
timeinfo = localtime(&value);
strftime(string, sizeof(string), "%d/%m/%Y/%H:%M", timeinfo);
}
使用以下方法测试功能:
time_t variable = time(NULL);
char buffer[100];
time_to_str(variable, buffer);
printf("%s", buffer);
我得到以下输出,但我没有看到问题......有什么想法吗?
07/10/
解决方案
的第二个参数strftime
应该是要写入的缓冲区的大小,在这种情况下为 100。sizeof(string)
导致指向 char 的指针的大小,通常为 4 或 8。因此,strftime
只将几个字符写入string
缓冲区。
有关详细信息,请参阅strftime
.
推荐阅读
- javascript - 如何创建具有动态变化的列宽的网格布局?
- javascript - 如何在chart.js中用正常数字创建对数刻度?
- c++ - 我可以在主函数中返回一个结构吗?
- javascript - Firebase 函数 api 调用在模拟器上工作但不在生产中
- python - Python中的sqlite3:如何根据适用于其他2列的过滤器来平均列中的值?
- javascript - 为什么 Object3D.getWorldPosition 不只返回一个 THREE.Vector3?
- mongodb - Mongo Source 连接器中的最终投票记录不是实时的
- javascript - 你如何将数据从一个 observable 发送到另一个 observable?
- java - 下载文件时未定义 response.data
- python - python `threading.local` 跨使用`Gunicorn` 和`eventlet` 的请求是否安全?