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

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

    关注

    5082

    文章

    19103

    浏览量

    304719
  • printf函数
    +关注

    关注

    0

    文章

    31

    浏览量

    5890
收藏 人收藏

    评论

    相关推荐

    stdio.h实现了printf函数?

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

    51单片机中为什么很少出现printf的身影

    51单片机中为什么很少出现 printf 的身影?是用不了吗? 不是的,51单片机可以用 printf,只是不建议使用。 平时我们在操作系统上写C语言代码,使用 printf 可以把数据写到标准输出
    的头像 发表于 12-03 10:46 249次阅读
    51单片机中为什么很少出现<b class='flag-5'>printf</b>的身影

    还不会吗?三分钟让你速通Printf~

    一、Printf简介Printf是一个标准的c库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putcha
    的头像 发表于 07-27 08:11 292次阅读
    还不会吗?三分钟让你速通<b class='flag-5'>Printf</b>~

    重定向了fputc及putchar函数,但printf没有输出,为什么?

    重定向了fputc及putchar函数,但printf没有输出 删除了drivers/drv_uart.c drv_uart.h 删除了文件rt-thread\\components
    发表于 07-18 07:44

    STM32CubeIDE printf浮点数,浮点数丢失数值的原因?

    1、芯片:STM32F103C8T62、环境:STM32CubeIDE3、问题:printf浮点数,浮点数数值丢失如 float A=25.6666;float B=24.7777;实际打印
    发表于 06-03 07:07

    stm32h745的特殊引脚如何使用HAL库定义

    现在手上有块stm32h745ii的板子,想把pc13 pc14 pc15三个特殊引脚定义普通io口,找了一下HAL库,好像没有f4库里面能直接调用的接口,有知道的大神麻烦告知一下该如何操作
    发表于 05-24 08:31

    芯海通用 MCU应用笔记 :在 IAR 及 MDK 开发环境下使用 printf 函数重定向移植差异指南

    和调试中,printf 函数是常用的打印函数,通常通过 fputc 接口的重定向,即可以通过 printf 输出串口的信息。 但在 IAR8.x 下,需要一些 IDE 的额外配置,MCU 才能正确通过
    发表于 05-16 11:56

    求助,关于HAL下的printf重定向输出疑问求解

    发送结束吗? (2)在用标准库编程中,重定向函数 int fputc(int ch,FILE *p)//函数默认的,在使用printf函数时自动调用 { USART_SendData
    发表于 05-10 06:04

    stm32f7系列使用printf打印在串口上显示不出来怎么解决?

    /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf set
    发表于 04-11 06:18

    用IAR测试stm8s003的printf,无法打印小数点是怎么回事?

    如题,无法输出小数点,IAR还要怎么设置?? double y=0; y=34.56; printf(\"rn Printf_Number1 = %0.1f rn\", y
    发表于 04-07 06:01

    STM32的疑难杂症之一:Printf的使用

    一、Printf简介Printf是一个标准的C库API,用来打印信息显示的。Printf的底层输出调用,在windows环境下是fputc函数,在GNUC环境下是__io_putcha
    的头像 发表于 04-02 08:09 3593次阅读
    STM32的疑难杂症之一:<b class='flag-5'>Printf</b>的使用

    求助,关于STM32CUBEIDE1.5.0使用Printf函数的疑问

    基于eclipse的,就把工程弄到STM32CUBEIDE中,但怎么都不OK 自己从新从STM32CUBEMX到STM32CUBEIDE建工程,发现可以烧录进去,LED跑起来了,但是printf函数怎么都不行! 网上
    发表于 03-22 06:47

    SPI_Receive_IT接收中断通过hspi-&gt;RxISR(hspi)来实现,程序当中无法通过中断函数进入自己定义怎么解决?

    G0系列当中例如SPI_Receive_IT接收中断实现方式通过hspi->RxISR(hspi)来实现,但是本人程序当中无法通过中断函数进入自己定义
    发表于 03-19 08:02

    TLE9854 printf函数无法输出是怎么回事?

    ttywrch(int ch) { stdout_putchar(ch); } 我把sint32 stdout_putchar(sint32 Char)注释,改为 int fputc(int ch, FILE *f),printf可以用,这是怎么回事,是哪里我没配置吗
    发表于 02-02 16:05

    解决printf无法打印输出的问题

    FreeRTOS中直接使用newlib库是有问题的,相信使用过freertos进行printf都能发现这个问题,这个问题网上有两种方法:1、使用printf.stdarg.c,问题在于,这个库没有
    的头像 发表于 01-04 08:00 1856次阅读
    解决<b class='flag-5'>printf</b>无法打印输出的问题