0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

fputc重定义为printf

嵌入式应用开发 来源:嵌入式应用开发 作者:嵌入式应用开发 2022-06-18 20:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

描述

C 库函数 int fputc(int char, FILE *stream) 将参数 char 指定的字符(无符号 char)写入指定的流,并推进流的位置指示器。

声明

下面是 fputc() 函数的声明。

int fputc(int char, FILE *stream)

参数

char − 这是要写的字符。这将作为其 int 升级传递。

stream − 这是指向 FILE 对象的指针,该对象标识要写入字符的流。

返回值

如果没有错误,则返回已写入的同一字符。如果发生错误,则返回 EOF 并设置错误指示器。

下面的示例演示 fputc() 函数的用法。

#include 

int main () {
   FILE *fp;
   int ch;
   fp = fopen("file.txt", "w+");
   for( ch = 33 ; ch <= 100; ch++ ) {
      fputc(ch, fp);
   }
   fclose(fp);
   return(0);
}

下面将重定义为printf函数

///重定向c库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
		/* 发送一个字节数据到串口 */
		USART_SendData(USART3, (uint8_t) ch);
		
		/* 等待发送完毕 */
		while (USART_GetFlagStatus(USART3, USART_FLAG_TXE) == RESET);		
	
		return (ch);
}
 
///重定向c库函数scanf到串口,重写向后可使用scanf、getchar等函数
int fgetc(FILE *f)
{
		/* 等待串口输入数据 */
		while (USART_GetFlagStatus(USART3, USART_FLAG_RXNE) == RESET);
 
		return (int)USART_ReceiveData(USART3);
}
pYYBAGKtxKuANlFDAAJNElE9sWE213.png

审核编辑:符乾江
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5186

    文章

    20149

    浏览量

    328864
  • printf函数
    +关注

    关注

    0

    文章

    31

    浏览量

    6226
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    printf重定向之后无法运行是怎么回事?

    ch; } 在代码中添加printf之后进入调试模式点击RUN按钮是不能运行的。把print屏蔽之后就能运行。[/td][/tr] 以下内容评论 [tr][td
    发表于 11-13 08:07

    C语言的printf基本用法介绍

    printf 不会,要自己添加换行符,这是 puts 和 printf 在输出字符串时的一个区别。 2) //后面的注释。注释用来说明代码是什么意思,起到提示的作用,可以帮助我们理解代码。注释虽然
    发表于 11-12 07:04

    使用VScode的PIO开发GD32VF103,但是串口无法打印浮点数怎么解决?

    我最近在使用VScode的PIO开发GD32V,使用的是longan的模板,但是我将串口输出定义printf函数中,发现无法使用%f输出浮点数,想问问应该怎么配置,我看到的一种说法是在
    发表于 11-06 06:49

    电能质量在线监测装置通信超时会连吗?

    维度展开分析: 一、通信连的核心技术机制 1. 协议层重传与超时管理 Modbus 协议 :支持超时重传 3 次(默认配置),连间隔可通过参数设置(如 ABB PQFA 系列支持 0-60 秒自定义)。例如,当 Modbus
    的头像 发表于 11-05 17:55 1226次阅读

    printf函数在hbird SDK中的应用

    系统中,使用newlib作为C运行库,而newlib的C运行库所提供的printf函数最终依赖桩函数write。 在hbird_sdk中可以找到write.c文件 内容如下: 其中的SOC_DEBUG_UART被定义为了uart0。 所以,
    发表于 10-31 08:48

    e203仿真helloworld例程printf能在终端显示的原理

    pirntf可以直接输出信息。而在嵌入式领域,想要实现printf需要做一点工作。 以蜂鸟e203例,它没有显示器,没有标准终端,想要实现printf最常见的方式是通过串口打印信息。但是,怎么让编译器
    发表于 10-27 06:56

    什么是热分析法(TGA)

    分析LED产品的品质控制和优化提供了关键数据支持,有助于确保LED在实际应用中的稳定性和耐用性。热分析的构成热分析仪主要由以下几个关键部分构成:1.热天平将电
    的头像 发表于 08-19 21:29 722次阅读
    什么是热<b class='flag-5'>重</b>分析法(TGA)

    福田欧曼银河5刷新卡效能标准

    在物流行业进入“效率王、降本要”的竞争时代,一辆能兼顾高效运营、节能省本、舒适体验的卡,成为千万物流从业者的核心诉求。福田欧曼银河5作为福田汽车深度洞察用户痛点,立足卡全场景运
    的头像 发表于 07-03 14:02 793次阅读

    瑞萨RA单片机在e2 studio环境下printf编译出错的问题解析

    最近看到有一些网友在讨论关于:瑞萨RA单片机在e2 studio环境下printf编译出错的问题。
    的头像 发表于 05-24 15:51 1228次阅读
    瑞萨RA单片机在e2 studio环境下<b class='flag-5'>printf</b>编译出错的问题解析

    福田欧曼银河9重新定义全球卡标准

    产品升级与行业进步,欧曼银河9以“用户思维”核心,深度洞察物流从业者、运输企业及车队管理者的真实痛点,通过场景化创新、人性化设计、智能化服务,打造了一款真正“懂用户、用户”的旗舰卡,重新
    的头像 发表于 05-23 15:08 757次阅读

    长城卡Hi4-G超级混动系统发布

    近日,长城卡Hi4-G技术共创发布会在保定举行。这场以“用户共创”核心的技术盛会,是行业首次由卡车司机、物流企业代表与工程师同台讲述研发故事,通过真实场景数据与技术创新,重新定义中国
    的头像 发表于 03-27 17:09 809次阅读

    【RA-Eco-RA2L1-48PIN-V1.0开发板试用】——使用串口输出打印printf实现

    节.起始字符串First_String的宏定义 uint16_t USART_RX_STA = First_String_num; //接收状态标记,根据起始字符串来初始化起始字符位置 void
    发表于 01-23 12:20

    法法易直流充电枪:电动卡充电赋能

    在2060前实现碳中和,国家及多部委印发文件,推广新能源中重型货车等。目前新能源卡销量增长强劲,2024年电动卡占比超90%,但卡电动化渗透率不足15%,明年将迎来放量拐点。可
    的头像 发表于 01-16 15:02 696次阅读

    福田欧曼银河重新定义世界卡标准

    在当今全球卡行业中,随着科技的飞速发展和市场需求的不断变化,品牌形象的塑造和全球市场格局的重塑是企业竞争力的关键。基于“银河智慧架构”的欧曼银河系列产品,致力于“让中国卡重新定义世界标准”,从
    的头像 发表于 01-02 16:35 787次阅读

    stdio.h实现了printf函数?

    我们平时包含的 stdio.h 头文件,里面是不是实现了 printf 函数? 为什么会有这个疑问?因为每次使用 printf,就得包含 stdio.h ,这就导致很多同学误以为,stdio.h
    的头像 发表于 12-18 10:28 869次阅读