sprintf()在VS2008中提供访问冲突错误

时间:2012-05-04 06:10:31

标签: c++ c visual-studio visual-studio-2008

我在通过VS2008运行应用程序时遇到问题。我调试了代码,发现问题出在sprintf()。我收到以下错误

  

clarify.exe中0x005251d2处的未处理异常:0xC0000005:访问冲突读取>位置0xffffffd4。

执行以下行

static char buf[512]; 
char time_buf[100];

sprintf(buf, 
"EVENT_TIME %5.2f DOING 'LOGIN EVENT' on 'Session Login' LEVEL 1 \n AT %s \n\n",
seconds, time_buf);

我也尝试了_snprintf()但面临同样的问题。

2 个答案:

答案 0 :(得分:0)

是秒浮点类型吗? 你为什么不把它分成较小的部分? 先试试:

sprintf(buf, "test");

然后:

sprintf(buf, "test %s", time_buf);

然后:

sprintf(buf, "test %5.2", seconds);

答案 1 :(得分:0)

我认为您的问题是使用数组来编写。

调试显示您的代码只会将time_buf的第一个元素写入buf,而其他内容将被忽略。

Eclipse忽略了这个事实并没有给我任何警告或错误,但VS可能会对此案件有其他限制。

您可以执行类似

的操作
char buf[100];
char* temp;
temp = "--> Some Content <--";

sprintf(buf, "%s", temp);

这会将完整内容复制到缓冲区,但如果你可以在你的情况下使用它,则由你决定。