完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include #include //********************************************** #include #include int uart_printf(void* UartHandle,char* buf,size_t bufLen, const char *fmt, ...) { va_list arg; int cnt; #if 1 va_start(arg, fmt); cnt = vsnprintf(buf, bufLen, fmt, arg); //生成的字符串的长度至多为n-1,为额外的终止空字符留下空间。 va_end(arg); #else va_start(arg, fmt); cnt = vsprintf(buf, fmt, arg); va_end(arg); #endif printf("%s", buf); //UART0_SendBuf(buffer); return cnt; } //********************************************** int main() { std::cout << "Hello World!n"; #define BUF_LEN 3 char Buf[BUF_LEN] = { 0 }; int Res = 0; Res=uart_printf(NULL,Buf, BUF_LEN, "A=%drn", 1); std::cout <<'['<< Buf <<']'<< std::endl; printf("[%s]Res==%drnrn", Buf,Res); printf("rnrn"); system("pause"); } 描述: 将格式化数据从可变参数列表写入大小缓冲区 如果在printf上使用格式,则使用相同的文本组成字符串,但使用由arg标识的变量参数列表中的元素而不是附加的函数参数, 并将结果内容作为C字符串存储在s指向的缓冲区中 (以n为最大缓冲区容量来填充)。 如果结果字符串的长度超过了n-1个字符,则剩余的字符将被丢弃并且不被存储,而是被计算为函数返回的值。 在内部,函数从arg标识的列表中检索参数,就好像va_arg被使用了一样,因此arg的状态很可能被调用所改变。 在任何情况下,arg都应该在调用之前的某个时刻由va_start初始化,并且在调用之后的某个时刻,预计会由va_end释放。 参数: s 指向存储结果C字符串的缓冲区的指针。 缓冲区应至少有n个字符的大小。 n 在缓冲区中使用的最大字节数。 生成的字符串的长度至多为n-1,为额外的终止空字符留下空间。 size_t是一个无符号整数类型。 format 包含格式字符串的C字符串,其格式字符串与printf中的格式相同 arg 标识使用va_start初始化的变量参数列表的值。 va_list是在 返回值: 如果n足够大,则会写入的字符数,不包括终止空字符。 如果发生编码错误,则返回负数。 注意,只有当这个返回值是非负值且小于n时,字符串才被完全写入。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1758 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1613 浏览 1 评论
1053 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
721 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1931浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
721浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
563浏览 3评论
588浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
548浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-19 21:52 , Processed in 0.826178 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号