sprintf的段错误 [英] Sprintf Segmentation Fault

查看:812
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆