sprintf的段错误 [英] Sprintf Segmentation Fault
本文介绍了sprintf的段错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
numCheck是1-1000之间的数字。这code给我,只有当我收集的sprintf在charcheck结果的段错误。如果我只是用sprintf不使用的结果,我没有得到一个赛格故障。这里发生了什么?
的char * numString;
INT charcheck = sprintf的(numString,%D,numCheck);
解决方案
您需要为的sprintf
您自己的内存。另外,不要使用的sprintf
,而的snprintf
:
字符BUF [1000] = {0};的snprintf(BUF,999,....);
另外,您可以动态分配内存:
的char * BUF =新的char [BUFSIZE];
的snprintf(BUF,BUFSIZE-1,...);
/ * ... * /
删除[] buf中;
numCheck is number between 1-1000. This code gives me a segfault only when I collect the results of sprintf in charcheck. If I simply use sprintf without using the results, I don't get a seg fault. What's happening here?
char * numString;
int charcheck = sprintf(numString, "%d", numCheck);
解决方案
You need to provide your own memory for sprintf
. Also, don't use sprintf
, but rather snprintf
:
char buf[1000] = {0};
snprintf(buf, 999, ....);
Alternatively you can allocate memory dynamically:
char * buf = new char[BUFSIZE];
snprintf(buf, BUFSIZE-1, ...);
/* ... */
delete[] buf;
这篇关于sprintf的段错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文