c - snprintf() c 中的段错误

标签 c char printf

我正在尝试创建一个返回带有当前日期和时间的 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,可以使用mallocsnprintf来实现。我将这样做作为练习。

关于c - snprintf() c 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26934948/

相关文章:

c - 意想不到的值(value)C结构

java - 字符的拆分和求和

c - sprintf() 负返回值和errno

c - 如何读取用户输入的字符串并进行分配?

c - 为什么这种检测机器存储方式的方法不正确? (使用C语言)

c++ - OpenMP性能

C++ char 数组的动态数组

c - MSVCRT 的 fprintf() 线程实现是否安全?

linux - 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

c++ - 如何将字符转换为整数