C++ sprintf()在VS2008中出现访问冲突错误

C++ sprintf()在VS2008中出现访问冲突错误,c++,c,visual-studio,visual-studio-2008,C++,C,Visual Studio,Visual Studio 2008,通过VS2008运行应用程序时,我遇到了一个问题。我已经调试了代码,发现问题出在sprintf()上。我得到以下错误 Clearify.exe中0x005251d2处的未处理异常:0xC0000005:访问冲突读取>位置0xFFFFD4 在执行下面的行时 static char buf[512]; char time_buf[100]; sprintf(buf, "EVENT_TIME %5.2f DOING 'LOGIN EVENT' on 'Session Login' LEVEL 1

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

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

在执行下面的行时

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);

我也尝试过
\u snprintf()
,但面临同样的问题。

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

sprintf(buf, "test");
然后:

然后:


我认为您的问题在于使用数组进行写入

调试表明,您的代码只会将time\u buf的第一个元素写入buf,其余内容将被忽略

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

你可以这样做

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

sprintf(buf, "%s", temp);
charbuf[100];
字符*温度;

temp=“-->”一些内容请发布相关代码。(例如,buf和time_buf的声明),那么调试器会怎么说
buf
seconds
、和
time_buf
的值是什么?其中一个或多个可能不太正确。我敢打赌这是
time_buf
。声明如下所示…static char buf[512];字符时间单位[100];time_buf和seconds的值已更正..time_buf给出机器的时间..在执行这一行之前..buf包含有效的stringmore代码。:)所有字符串是否都明确终止?@Nikhil:也许您可以在调试器捕获异常时发布stacktrace。特别是显示参数通过的stacktrace在调用sprintf()之前,我还观察到一件事…buf包含字符串..但该字符串的结尾有垃圾字符..这可能是原因吗?为什么不回答我的问题?不,没关系,buf没有初始化,所以它可以包含垃圾字符。是的,secinds是浮点类型,我尝试将其分为不同部分..仍然面临相同的问题e、 ..:(
sprintf(buf, "test %5.2", seconds);
char buf[100];
char* temp;
temp = "--> Some Content <--";

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