c - Sprintf 段错误

标签 c segmentation-fault printf

numCheck 是 1-1000 之间的数字。只有当我在 charcheck 中收集 sprintf 的结果时,这段代码才会给我一个段错误。如果我只是使用 sprintf 而不使用结果,我不会遇到段错误。这里发生了什么?

char * numString;
int charcheck = sprintf(numString, "%d", numCheck);

最佳答案

您需要为sprintf 提供您自己的内存。另外,不要使用 sprintf,而是使用 snprintf:

char buf[1000] = {0};

snprintf(buf, 999, ....);

或者你可以动态分配内存:

char * buf = new char[BUFSIZE];
snprintf(buf, BUFSIZE-1, ...);
/* ... */
delete[] buf;

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

相关文章:

c - 在解析树中打印第三个字符串时出现段错误

c - C 中没有 else 的三元运算符

c++ - 需要帮助解决编译器错误 : error: invalid conversion from ‘int’ to ‘GIOCondition’

c - 使用 memcmp 时出现段错误

c - 将输入文件的每一行打印两次?

将 10 位 Int 转换为 Hex,然后将其转换为 C 中的值

c - 如何将三指针变短?

c - C中通过socket接收和发送数据

c - IAR 使用不同的 #define 构建库

python - 构建 Numpy C++ 扩展;调用 PyArray_FROM_OTF 时出现段错误