下面是两函数的原型 ,函数后面部分是相同的
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format [, argument] ...
);int printf(
const char* format [, argument]...
);
--------------------------------RIGHT----------------------
printf(" %s = %s\n\n" , (LPCSTR) pFldLoop->GetItem(vtIndex)->GetName(), \
(LPCSTR) (_bstr_t) pFldLoop->GetItem(vtIndex)->Value);
--------------------------------ERROR-----------------------
PCHAR szTemp;
sprintf_s(szTemp,sizeof(szTemp)," %s = %s\n\n", \
(LPCSTR) pFldLoop->GetItem(vtIndex)->GetName(), (LPCSTR) (_bstr_t) pFldLoop->GetItem(vtIndex)->Value);
后者提示错误是0x1029a189 (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x004218a3 时发生访问冲突
跟踪代码到
LOCAL(void) write_char (
_TCHAR ch,
FILE *f,
int *pnumwritten
)
{
if ( (f->_flag & _IOSTRG) && f->_base == NULL)
{
++(*pnumwritten);
return;
}
#ifdef _UNICODE
if (_putwc_nolock(ch, f) == WEOF)
#else /* _UNICODE */
[color=#333399]if (_putc_nolock(ch, f) == EOF)// 这个位置
#endif /* _UNICODE */
*pnumwritten = -1;
else
++(*pnumwritten);
}int _putc_nolock( //Writes a character to a stream without locking the thread.
int c,
FILE *stream
);请问为什么会出现这样的错误,如何解决?Thank you!
int sprintf_s(
char *buffer,
size_t sizeOfBuffer,
const char *format [, argument] ...
);int printf(
const char* format [, argument]...
);
--------------------------------RIGHT----------------------
printf(" %s = %s\n\n" , (LPCSTR) pFldLoop->GetItem(vtIndex)->GetName(), \
(LPCSTR) (_bstr_t) pFldLoop->GetItem(vtIndex)->Value);
--------------------------------ERROR-----------------------
PCHAR szTemp;
sprintf_s(szTemp,sizeof(szTemp)," %s = %s\n\n", \
(LPCSTR) pFldLoop->GetItem(vtIndex)->GetName(), (LPCSTR) (_bstr_t) pFldLoop->GetItem(vtIndex)->Value);
后者提示错误是0x1029a189 (msvcr90d.dll) 处未处理的异常: 0xC0000005: 写入位置 0x004218a3 时发生访问冲突
跟踪代码到
LOCAL(void) write_char (
_TCHAR ch,
FILE *f,
int *pnumwritten
)
{
if ( (f->_flag & _IOSTRG) && f->_base == NULL)
{
++(*pnumwritten);
return;
}
#ifdef _UNICODE
if (_putwc_nolock(ch, f) == WEOF)
#else /* _UNICODE */
[color=#333399]if (_putc_nolock(ch, f) == EOF)// 这个位置
#endif /* _UNICODE */
*pnumwritten = -1;
else
++(*pnumwritten);
}int _putc_nolock( //Writes a character to a stream without locking the thread.
int c,
FILE *stream
);请问为什么会出现这样的错误,如何解决?Thank you!
ZeroMemory(szTemp,0);
还是用数组比较好