我正在尝试创建一个返回带有当前日期和时间的 char *
的函数。但是我在使用 snprintf 时遇到了段错误。
这是代码的一部分。
int buf_size = 20;
char *n = NULL;
snprintf(n, buf_size , "%d-%d-%d %d:%d:%d\n", 1900+st.tm_year,
st.tm_mon+1, st.tm_mday, st.tm_hour, st.tm_min, st.tm_sec);
最佳答案
snprintf
不会为您分配缓冲区。您将 n
设置为 NULL
,因此它会愉快地尝试写入不存在的内存位置并崩溃。
您想使用 asprintf
反而。如果你的C库没有asprintf
,可以使用malloc
和snprintf
来实现。我将这样做作为练习。
关于c - snprintf() c 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934948/