我在通过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()
但面临同样的问题。
答案 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);
这会将完整内容复制到缓冲区,但如果你可以在你的情况下使用它,则由你决定。