-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

秒浮動小数点型ですか?細かく分けてみませんか?初挑戦:

sprintf(buf, "test");

それから:

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

それから:

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

あなたの場合の問題は、配列を使用して書き込むことだと思います。

time_bufデバッグは、あなたのコードがtoの最初の要素だけを書きbuf、残りのコンテンツが単に無視されること以外に何もしないことを示しています。

Eclipse はこの事実を無視しており、警告やエラーは表示されませんが、この場合、VS には他の制限がある可能性があります。

次のようなことができます

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

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

これにより、コンテンツ全体がバッファにコピーされますが、それを使用できるかどうかはあなた次第です。

于 2012-05-04T08:54:02.320 に答える