C语言中fscanf和fprintf函数的使用

article/2025/9/12 5:36:37

目录

一、前言

二、对比

1、scanf和fscanf:

2、printf和fprintf:

三、结论:

四、代码实现 

1、fprintf相关代码

2、fscanf代码实现 

3、 用fscanf和fprintf实现scanf和printf功能:


一、前言

在了解fscanf和fprintf之前我们先简单了解一下键盘和屏幕。程序打开时会默认打开两个流设备。1、键盘----标准输入流(stdin);2、屏幕---标准输出流(stdout)。这就实现了从键盘输入输出到屏幕上。

二、对比

1、scanf和fscanf:

MSDN中对于fscanf的解释:Read formatted data from a strea(从流中读取格式化数据。)

MSDN中对于scanf的解释:Read formatted data from the standard input s(从标准输入流中读取格式化数据。)

 使用 :int fscanf( FILE *stream, const char *format [, argument ]... );

 使用:int scanf(                            const char *format [,argument]... );

2、printf和fprintf:

MSDN中对于fprintf的解释:  Print formatted data to a stream.(将格式化的数据打印到流中。) 

MSDN中对于printf的解释: Print formatted output to the standard output stream.(将格式化输出打印到标准输出流。)

使用 :int fprintf( FILE *stream, const char *format [, argument ]...); 

使用:int printf(                            const char *format [, argument]... );

三、结论:

1、fprintf和fscanf比printf和scanf多了一个参数(文件指针流),其他使用方式都一样。

2、printf函数打印数据到标准输出流(stdout)中,而fprintf适用于所有输出流,可以可以将数据写入到自定义的流(stream)中,不仅仅局限于标准输出流(屏幕)。

3、同样scanf函数从标准输入流(stdin)中读取数据,而fscanf适用于所有输入流,可以将数据从自定义的流(stream)中读取出来,不仅仅局限于标准输入流。

四、代码实现 

1、fprintf相关代码

int main()
{int a=10 ;float b=3.14f;char arr[10]="hello";//打开文件FILE* pf = fopen("text.txt", "w");if (pf == NULL){printf("%s\n", strerror(errno));return 0;}//操作文件//将a,b,arr中的数据write(写入)到pf流中去fprintf(pf, "%d %f %s\n", a, b, arr);//将常量字符串写入到pf流中去fprintf(pf, "modern");//用fprintf实现printf---->将数据写入到标准输出流中(屏幕)fprintf(stdout,"%d %f %s\n", a, b, arr);//关闭文件fclose(pf);pf = NULL;return 0;
}

运行结果: 

经过上面的代码我们已经在当前文件目录下创建了一个text.txt文件,并且将数据存放了进去。

2、fscanf代码实现 

 数据存放进了文件中,下面我们可以用fscanf从文件指针流(pf)中读取数据并且放到相应的变量中去。

补充:我们在键盘上输入的任何东西,会先进入输入缓冲区区域,然后程序从输入缓冲区里把数据一个一个读出来。scanf函数从标准输入流(键盘)读取数据后,数据被暂时放了缓冲区中。而fscanf读取的数据会被放入到变量中,会直接改变变量的值。 

例1、因为我们要从流中读取数据,所以先不给a,b,arr数组赋值,看一下fscanf函数是否真的从流中读取数据放入了a,b,arr中。

int main()
{int a;float b;char arr[10];//打开文件FILE* pf = fopen("text.txt", "r");if (pf == NULL){printf("%s\n", strerror(errno));return 0;}//操作文件//从pf流中读取数据并且存放到a,b,arr中去fscanf(pf, "%d %f %s", &a, &b, arr);printf("a=%d,b=%f,arr=%s\n", a, b, arr);//用fprintf打印到屏幕上fprintf(stdout, "a=%d,b=%f,arr=%s\n", a, b, arr);//关闭文件fclose(pf);pf = NULL;return 0;
}

 结果:

例二、自己创建一个文件并输入内容,然后再程序中创建一个合适的变量来接收。

代码和结果如下: 

3、 用fscanf和fprintf实现scanf和printf功能:

int main()
{	int a=0;//用fscanf和fprintf实现scanf和printffscanf(stdin, "%d", &a);fprintf(stdout, "%d", a);return 0;
}


http://chatgpt.dhexx.cn/article/JeLqkFDM.shtml

相关文章

printf()函数详解

感谢博主的分享:https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数,用于将格式化后的字符串输出到标准输出。标准输出,即标准输出文件,对应终端的屏幕。printf()申明于头文件stdio.h。 函数原型&am…

有关于fprintf()函数的用法

fprintf(简介) fprintf是C/C中的一个格式化库函数,位于头文件中,其作用是格式化输出到一个流文件中;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]…),fprintf()函数根据指定的格…

雷达理论的模糊函数

在雷达理论中,模糊与分辨是两个既有联系又有区别的概念。对多个目标来说,模糊就是不能分辨。雷达的分辨力取决于模糊图中心主瓣的宽度。雷达模糊度不仅考虑主瓣宽度,还考虑模糊图旁瓣的影响。因此,在研究雷达分辨理论之前&#xf…

驱动板LVDS输出接口(发送器),液晶面板LVDS输入接口(接收器)

1.LVDS输出接口概述 液晶显示器驱动板输出的数字信号中,除了包括RGB数据信号外,还包括行同步、场同步、像素时钟等信号,其中像素时钟信号的最高频率可超过28MHz。采用TTL接口,数据传输速率不高,传输距离较短…

两种LVDS数传接口--车载视频传输

本文介绍两种LVDS数传接口:GMSL和FPD Link,这两种接口在汽车视频传输方面的应用是比较广泛的,尤其是Camera和处理器之间的链路,通过STP或者同轴电缆能使整个链路达到15m。 1、FPD Link Flat Panel Display Link(FPD Link)最早是…

LVDS接口分类与数据格式

转发路径:https://blog.csdn.net/a617996505/article/details/82386952 1.LVDS接口分类与数据格式 单路6it LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此,也称18位…

Xilinx fpga实现LVDS高速ADC接口

LVDS 即Low-Voltage Differential Signaling。FPGA的selecteIO非常强大,支持各种IO接口标准,电压电流都可以配置。其接口速率可以达到几百M甚至上千M。使用lvds来接收高速ADC产生的数据会很方便。像ISERDES,IDDR,IDELAY&#xff0…

LVDS接口和接口电路概述

1、LVDS接口概述 LVDS,即Low Voltage Differential Signaling,是一种低压差分信号技术接口。克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS输出接口利用非常低的电压摆幅(约350m…

常见视频高速接口分析MIPI,LVDS,RGB,HDMI

文章目录 一、RGB接口二、LVDS接口三、MIPI接口四、HDMI接口 一、RGB接口 (1)接口定义 RGB颜色是工业界的一种颜色标准,是通过对红、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红…

接口mipi和lvds的区别

原文:http://m.elecfans.com/article/578395.html MIPI (Mobile Industry Processor Interface) 是2003年由ARM, Nokia, ST ,TI等公司成立的一个联盟,目的是把手机内部的接口如摄像头、显示屏接…

液晶屏接口LVDS接口与MIPI DSI接口区别

LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与lvds接口区别LVDS与MIPI DSI区别_那个苏轼回不来了丶的博客-CSDN博客_“mipi dsi接口与 1、LVDS接口只用于传输视频数据&#x…

液晶屏接口-LVDS

LVDS是英文Low Voltage Differential Signaling的缩写,它是一种低压差分信号技术接口。采用LVDS接口,可以使得信号在差分PCB线或平衡电缆上以几百Mbps的速率传输,推荐的最高数据传输速率是655Mbps,而理论上可以达到1.923Gbps。 【…

LVDS高速接口测试

话不多说,直接测试 1. OUTPUT:LVDS_TX 2. SDR:代表着速率,测试选的SDR(单速率) 3. 8:串换因子,就是一对LVDS转化几bit的并行数据(和后面的clk,clk_div有关系…

MIPI、LVDS、RGB、HDMI等接口对比

液晶屏有RGB TTL、LVDS、MIPI、HDMI接口,这些接口区别于信号的类型(种类),也区别于信号内容。 具体RGB TTL接口信号类型是TTL电平,信号的内容是RGB666或者RGB888还有行场同步和时钟; LVDS接口信号类型是LVD…

LVDS接口液晶屏定义(lcd)

转载于:https://blog.csdn.net/linphusen/article/details/6389032 LVDS接口液晶屏定义 LVDS接口又称RS-644总线接口 20PIN单6定义: 1:电源2:电源3:地 4:地 5:R0- 6:R0 7&…

基于FPGA的LVDS接口设计

实验内容: 通过LVDS接口,完成数据的收发测试。 上周居然开启了咸鱼模式,检讨一下 || 前集回顾: 《Xilinx - UG471中文翻译》(1)IDELAYE2原语介绍 《Xilinx - UG471中文翻译》(2)…

LVDS屏的俩种接口:JEIDAVESA

一、LVDS数据格式 LVDS信号格式有两种,一种JEIDA的标准,一种是VESA的标准; LCD屏老一点的有6bit的,现在普通的是8bit,新的就是10bit了; 每个clock周期内7bit数据(跟TMDS标准有差别): 对应的…

LVDS接口是什么接口?

目前,有2种数字显示接口标准,一是由美国国家半导体公司(National Semiconductor,NS)推出的OpenLDI数字显示接口标准,另一个是由Silicon Image、Intel、Compaq、IBM、HP、NEC、Fujitsu等公司共同组成数字显示工作组&…

sensor lvds接口介绍

1.项目简介 用索尼的imx264 sensor采集图像,在内部模数转换之后,由lvds接收,然后解码,最后送给后端显示 2.框图 imx264配置成从模式,由spi总线配置,需要由FPGA提供 行、场信号,imx264根据接收到…

LVDS,CML,LVPECL,VML接口详细介绍

在平时的工作中,经常会接触到各种差分电平的转换,网上也有很多这样的资料,但发现有些混乱,所以找了TI的这份文档进行翻译,一是系统的归类一下,二是自己也能通过这个来加深理解和学习。这个文档对于各个电平…