• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

printf函数重定向是怎样实现发送一个字符串的

牛妞小小 2019-03-20 浏览量:1469
printf函数重定向之后fputs函数只是发送了一个字节为什么能够发送字符串,printf函数的原型是什么,是怎样实现发送一个字符串的。重定向代码如下:
int fputc(int ch FILE *f)
{      
	while((USART1->SR&0X40)==0);//循环发送直到发送完毕   
    USART1->DR = (u8) ch;      
	return ch;
}
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 可以这样理解,所有串口的数据都是一个字节一个字节的发送的,比如一个10字节的字符串,那么就是循环调用了10一个字节发送的函数,那么我们把一个字节发送的这个函数从发送到控制台改为了串口,那么调用串口发送字符串时就会循环调用这个发送一字节到串口的函数,形成字符串的发送。
    • 发布于 2019-03-20
    • 举报
    • 评论 0
    • 1
    • 0

其他答案 数量:5
  • printf函数的重定向函数为返回值为int的fputc函数,在stdio.h中规定printf函数是根据参数字符串长度循环调用fputc函数用作逐个字符输出,并且fputc函数有weak弱类型关键字,允许用户直接在外部驱动中修改而不一定遵循stdio.h里面的定义。


    • 发布于2019-03-21
    • 举报
    • 评论 0
    • 1
    • 0

  • 从定向代码里面的while语句,数据会一直发送,直到数据发送完毕为止,不是只发一个字符
    • 发布于2019-03-20
    • 举报
    • 评论 2
    • 0
    • 0
牛妞小小 回复了 d6372b97c2fc28a9 :这里的while只是判断一个字节有没有发送完成,而不是循环发送字符串。 回复
d6372b97c2fc28a9 回复了 d6372b97c2fc28a9 :额额,这就尴尬了,理解错了 回复

  • C语言标准库里面printf的实现是调用fputc,printf是打印字符串,就是多次调用fputc
    • 发布于2019-03-22
    • 举报
    • 评论 0
    • 0
    • 0

  • printf是函数,然后printf调用了fputc,所以只需要重写fputc就可以,当然你要整个重写printf也没什么不可以。重写的原理跟语法无关,跟链接有关。
    • 发布于2019-03-20
    • 举报
    • 评论 0
    • -1
    • 0

  • 有个while循环,会一直调用fputc,而且会判断是否发送完了,所以一个字节一个字节发,一直发不就都发完了。
    • 发布于2019-03-20
    • 举报
    • 评论 0
    • -1
    • 0

相关问题

问题达人换一批

printf函数重定向是怎样实现发送一个字符串的