-1

我在通过VS2008. 我调试了代码,发现问题出在sprintf(). 我收到以下错误

clear.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(),但面临同样的问题。

4

2 回答 2

0

我认为您的问题是使用数组进行写入。

调试表明您的代码除了只编写 to 的第一个元素之外什么都不会做time_bufbuf其余内容将被忽略。

Eclipse 忽略了这一事实,并没有给我任何警告或错误,但也许 VS 对这种情况有一些其他限制。

你可以做类似的事情

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

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

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

于 2012-05-04T08:54:02.320 回答
0

是秒浮点型吗?你为什么不把它分成更小的部分?第一次尝试:

sprintf(buf, "test");

然后:

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

然后:

sprintf(buf, "test %5.2", seconds);
于 2012-05-04T08:08:06.303 回答