linux fputc fgetc fseek rewind 函数

article/2025/10/11 5:21:56

目录

  • 前言
  • fputc 函数
  • fgetc 函数
  • fseek函数
  • rewind函数

前言

<sprintf fprintf 函数 >

前一节讲了 sprintf fprintf 函数 的缓存问题 在他们的基础上加了一个while1);
来验证 结果都是输出的
不管怎么样 都会写入到内核态 内核态在输出到终端 
并且注意 sprintf只是一个存放缓存的函数 还需要一个printf 来配合使用。
这节来讲 fputc fgetc 函数 的缓存问题 

fputc 函数

在这里插入图片描述

 fputc 简单理解就是往文件里面写入字符  
 #include<stdio.h>int  main()
{FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n");fputc('a',fd);fclose(fd);return 0;}

在这里插入图片描述

如果证明是否是行缓存直接在后面加 while1);就行了 
#include<stdio.h>int  main()
{FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n");  fputc('a',fd);while(1);  flcose(fd);return 0;}

在这里插入图片描述

结果不输出  证明了 他不是行缓存 但是 有 缓存   怎么证明呢 
    在前面基础上加 fputc('\n',fd);  1 加入换行符 试试它会不会不受到while1);的影响 正常情况 换行是行缓存成立的条件之一  反之就不成立。    
#include<stdio.h>int  main()
{FILE *fd;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}pritnf("fopen is success\n");fputc('a',fd);fputc('\n',fd);while(1);flcose(fd);return 0;}

在这里插入图片描述

文件里 还是没有内容 所以 fputc 不是行缓存 但有缓存。
说明 fputc 不是行缓存函数 

fgetc 函数

在这里插入图片描述

用 fgetc 把fputc 内容(文件内容 )到输出终端 
#include<stdio.h>int  main()
{FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

在这里插入图片描述

为什么乱码呢  
需要光标移动 因为fputc 到了最后 但是fgetc 却不知道。

fseek函数

在这里插入图片描述

这么配置就行了
SEEK_SET :从0开始 
offest : 0单位 
stream: 文件流
 #include<stdio.h>int  main()
{FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);fseek(fd,0,SEEK_SET);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

在这里插入图片描述

rewind函数

在这里插入图片描述

rewind(fd) = =    fseek(fd,0,SEEK_SET);
写 rewind(fd) 就很方便 
 #include<stdio.h>int  main()
{FILE *fd;int str;fd=fopen("w.c","w+");if(fd==NULL){printf("fopen is error\n");return -1;}printf("fopen is success\n");fputc('a',fd);rewind(fd);str=fgetc(fd);printf("str is %c\n",str);flcose(fd);return 0;}

在这里插入图片描述


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

相关文章

c语言中fputc函数的作用是,C语言中fputc函数的用法

C语言中fputc函数的用法 C语言中fputc函数的用法为“int fgetc (FILE *fp)”&#xff0c;该函数的作用是从指定的文件中读取一个字符&#xff0c; 读取成功时会返回读取到的字符&#xff0c;读取到文件末尾或读取失败时返回EOF。推荐教程&#xff1a;《C语言》 示例代码#includ…

STM32重写fputc

操作步骤 01、在项目中&#xff0c;加上以下函数即可&#xff08;作用&#xff1a;重写fputc&#xff09; 库函数版 int fputc( int ch, FILE *f ){ USART_SendData(USART1,(u8) ch ); while(USART_GetFlagStatus(USART1,USART_F…

STM32重写fputc汇总

1. 在工程项目中加上函数fputc 例如&#xff1a; 库函数版 int fputc( int ch, FILE *f ) {USART_SendData(USART2,(u8) ch );while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)RESET);return ch; }寄存器版 int fputc(int ch, FILE *f){ while((USART2->SR&0X40)0)…

Keil 重定向 fputc 函数 以及 printf 函数的代码尺寸测试

本文的开发环境为 Keil Cortex-M3 内核处理器。 重定向 fputc 函数方法 如果想使用库函数 printf &#xff0c;必须要将 fputc 重定向到自己的串口上。 术语 重定向 可以理解为用户重写 fputc 函数&#xff0c;在重写的函数体内调用自己硬件的串口发送函数。 在 Keil 环境中…

fputc函数

/****************************************功能&#xff1a;写一个字节到文件流中*参数&#xff1a;* c 写入的字符* stream 流指针*返回值&#xff1a;* 成功返回字符* 失败返回EOF或errno*************************************/ int fputc(int c, FILE *stre…

标准c库:fputc,fgetc,feof

1、了解标准c库fopen等用法&#xff08;点击跳转&#xff09; 2、fputc写一个字符到文件 #include <stdio.h>int main() {FILE *fp;fp fopen("./test.txt","w");//int fputc(int c, FILE *stream);fputc(a,fp);fclose(fp);return 0; }3、fputc写一…

文件的输入输出函数

文章目录 前言字符输入输出函数 - fgetc和fputc文本输入输出函数 - fgets和fputs格式化输入输出函数 - fscanf和fprintf二进制输入输出函数 - fread和fwrite 前言 在文件操作函数&#xff08;一&#xff09;中&#xff0c;我们已经学会了怎样正确地打开和关闭一个文件&#xf…

计算机网络 | 传输层的两个重要协议——TCP、UDP

目录 传输层概述 传输层的作用 运输层端口号、复用与分用的概念 发送方的复用和接收方的分用 UDP和TCP的对比 TCP的流量控制 TCP的拥塞控制 TCP的差错控制 UDP的差错控制的和流控 TCP的封装格式 TCP主要特点 TCP的连接 可靠传输的工作原理 TCP连接的三次握手和四次挥…

以太网协议

以太网(Ethernet) 以太网是一种局域网技术,其规定了访问控制方法、传输控制协议、网络拓扑结构、传输速率等,完成数据链路层和物理层的一些内容,它采用一种称作CSMA/CD的媒体接入方法,其意思是带冲突检测的载波侦听多路接入(Carrier Sense, Multiple Access with Collisi…

传输层TCP协议和UDP协议

传输层协议 文章目录 传输层协议传输层&#xff1a;传输层协议&#xff1a;UDP协议&#xff1a;TCP协议&#xff1a;UDP协议和TCP协议的比较&#xff1a;适用场景&#xff1a; 传输层&#xff1a; 传输层是OSI中最重要&#xff0c;最关键的一层,是唯一负责总体的数据传输和数据…

文件传输协议FTP

文件传输协议FTP(File Transfer Protocol)是因特网中使用最广泛的文件传输协议。FTP使用交互式的访问&#xff0c;允许客户指定文件的类型和格式(如指明是否使用ASCII码)&#xff0c;并允许文件具有存取权限(如访问文件的用户必须经过授权&#xff0c;并输入有效的口令)。 文件…

传输层协议详解

一、传输层的概念和服务 1、传输层的基本概念 传输层负责端到端之间的数据传输控制传输层依赖于网络层的服务&#xff0c;对应用层提供传输服务 2、传输层的功能 跟踪会话 跟踪源主机和目的主机上应用程序间的每次通信 数据分段 将数据分段&#xff0c;并管理每个分段 …

TCP-面向连接的传输层协议

TCP 主要特点工作方式建立连接---三次握手为什么 TCP 建立连接需要三次握手&#xff0c;而不是两次&#xff1f;连接终止---四次挥手为什么要四次挥手为什么要等待2MSL TCP流量控制TCP拥塞控制1.慢开始和拥塞避免2.快重传和快恢复 传输控制协议&#xff08;TCP&#xff0c;Tran…

简介 传输层协议——UDP协议

UDP协议&#xff1a; UDP&#xff1a;User Datagram Protocol 用户数据报协议 UDP简介&#xff1a; UDP是一种面向无连接的传输层协议&#xff0c;UDP数据包括目的端口号和源端口号信息&#xff0c;由于通讯不需要连接&#xff0c;所以可以实现广播发送。UDP提供面向事务的简…

TCP(传输控制协议详解)详解

TCP协议的特点 &#xff08;1&#xff09;TCP协议是面向连接的运输层协议 在数据传输前必须建立连接&#xff0c;数据传输之后释放连接。 &#xff08;2&#xff09;TCP提供可靠交付的服务 所谓可靠是指在传输过程中无重复&#xff0c;无丢失&#xff0c;无错误。但是同时会…

TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)

TCP/IP协议 TCP/IP&#xff08;Transmission Control Protocol/Internet Protocol&#xff0c;传输控制协议/网际协议&#xff09;是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议&#xff0c;而是指一个由FTP、SMTP、TCP、UDP、IP等协…

用户数据报协议UDP和传输控制协议TCP

目录 UDP UDP的功能 UDP的特点 UDP的首部格式 TCP TCP的功能 TCP的特点 TCP面向流的概念 套接字&#xff08;socket) 无连接工作流程和面向连接的工作流程对比 UDP UDP的功能 UDP只在IP的数据报服务上增加了很少一点功能&#xff1a; 1.复用和分用功能 2.差错检测…

TCP(传输控制协议)

TCP 最主要的特点 TCP 是应用程序在使用 TCP 协议之前&#xff0c;必须先建立 TCP 连接。 在传送数据完毕后&#xff0c;必须释放已经建立的 TCP 连接面向连接的运输层协议每一条 TCP 连接只能有两个&#xff0c;每一条 TCP 连接只能是(一对一)点对点TCP 提供的服务。 通过 TCP…

传输层-传输控制协议(TCP)

目录 TCP 协议概述TCP 报文段结构TCP连接管理三次握手四次挥手 TCP 可靠数据传输TCP拥塞控制 TCP 协议概述 传输控制协议&#xff08;TCP&#xff09;是Internet传输层协议。提供面向连接、可靠、有序、字节流传输服务。 面向连接&#xff1a;应用程序在使用 TCP 之前&#x…

传输控制协议---TCP协议【详解】

目录 一、协议简介 二、TCP报文格式 1、字段解析 2、报文解析 三、TCP的重传机制 1、超时重传 2、快速重传 3、 SACK 方法 4、Duplicate SACK 四、TCP的滑动窗口机制 五、流量控制 六、拥塞机制 1、慢启动 2、拥塞避免算法 3、拥塞发生 4、快速恢复 七、TCP的三…