printf printf_s 的疑问
下面是两函数的原型 ,函数后面部分是相同的
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!
...全文
相关推荐
STM8S003单片机串口实现printf函数功能
通过理解上述步骤和文件,你可以自己实现STM8S003单片机上的串口printf功能。
uart_printf程序
在S3C2440这样的微处理器上,UART_printf通常是基于C语言的printf函数的轻量化实现,适用于资源有限的嵌入式环境。
arm初学者之串口驱动中Uart_Printf()函数
ARM 初学者之串口驱动中 Uart_Printf() 函数Uart_Printf() 函数是 ARM 串口驱动中的一种重要函数,用于将格式化字符串发送到串口。
STM8-001_Printf.rar_STM8S103F3P6_STM8s001 串口_smt8S001 PRINTF_stm
在给定的"STM8-001_Printf.rar"压缩包中,包含了一个关于STM8S103F3P6的串口打印测试程序,这通常用于验证微控制器的串行通信接口和软件开发环境的正确性。
Uart.rar_S3C2440 输出_S3C2440串口_S3c2440 uart_s3c2440 printf
本篇将深入解析S3C2440的串口(UART)功能以及如何通过串口实现printf函数的输出。


