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/