【C语言】标准 I/O 函数:fopen()、fread()、fwrite()等函数原型、参数说明以及返回值描述

c语言标准io,例如:fread(),fwrite(),fgetc()等 (完) 好的,同学们,我们书接上回,继续讲我们的C语言标准io,这一次,我会全部讲完,不会再像上一篇一样偷懒了,请同学们拿出小本本,做好笔记。以下函数都在头文件stdio.h中 一. 打开,关闭文件流 1)open() 函数原型: FILE *fopen(const char *path, const char *mode); 功能: 打开一个文件流。 参数: path:要打开的文件名 mode:打开文件的标志。 r 只读打... 阅读详情

C标准库中常用文件I/O函数,定义在头文件 <stdio.h> 中,适用于文本和二进制文件的读写。它们是 ANSI C 标准的一部分,在大多数操作系统(如 Windows、Linux、macOS)下都支持。


1. fopen

FILE *fopen(const char *filename, const char *mode);
  • 参数:
    • filename:要打开的文件名(路径)。
    • mode:打开模式,例如 "r"(读)、"w"(写)、"a"(追加)、"rb"(二进制读)等。
  • 返回值:
    • 成功时返回指向 FILE 的指针;失败返回 NULL。
    • 包含 w 或 a 模式的 fopen 时,如果文件不存在,会自动创建。

2. fclose

int fclose(FILE *stream);
  • 参数:
    • stream:之前通过 fopen() 打开的文件指针。
  • 返回值:
    • 成功返回 0;
    • 出错返回 EOF(通常是 -1)。

3. fread

size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
  • 参数:
    • ptr:指向存储读取数据的缓冲区。
    • size:每个元素的大小(字节数)。
    • nmemb:要读取的元素个数。
    • stream:文件指针。
  • 返回值:
    • 成功读取的完整元素数量(小于等于 nmemb);
    • 若发生错误或到达文件末尾可能返回更少。

4. fwrite

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
  • 参数:
    • ptr:指向要写入的数据的指针。
    • size:每个元素的大小。
    • nmemb:要写入的元素个数。
    • stream:文件指针。
  • 返回值:
    • 成功写入的完整元素数量;
    • 如果小于 nmemb,可能发生了错误。

5. fgetc

int fgetc(FILE *stream);
  • 参数:
    • stream:文件指针。
  • 返回值:
    • 成功返回读取到的字符(转换为 unsigned char 后转成 int);
    • 出错或文件结束返回 EOF。

6. fgets

char *fgets(char *s, int n, FILE *stream);
  • 参数:
    • s:用于存储读取内容的字符串。
    • n:最多读取 n - 1 个字符(留一个给 \0)。
    • stream:文件指针。
  • 返回值:
    • 成功返回 s;
    • 文件结束或出错返回 NULL。

7. fputc

int fputc(int c, FILE *stream);
  • 参数:
    • c:要写入的字符(转换为 unsigned char 后作为 int 传递)。
    • stream:文件指针。
  • 返回值:
    • 成功返回写入的字符;
    • 出错返回 EOF。

8. fputs

int fputs(const char *s, FILE *stream);
  • 参数:
    • s:要写入的字符串(不包括结尾的 \0)。
    • stream:文件指针。
  • 返回值:
    • 成功返回非负整数;
    • 出错返回 EOF。

9. fprintf

int fprintf(FILE *stream, const char *format, ...);
  • 参数:
    • stream:文件指针。
    • format:格式化字符串。
    • 可变参数列表,对应 format 中的格式符。
  • 返回值:
    • 成功返回写入的字符数;
    • 出错返回负值。

10. fscanf

int fscanf(FILE *stream, const char *format, ...);
  • 参数:
    • stream:文件指针。
    • format:格式化字符串。
    • 可变参数列表,用于接收读取的数据。
  • 返回值:
    • 成功匹配并赋值的输入项数量;
    • 出错或文件结束返回 EOF。

11. feof

int feof(FILE *stream);
  • 参数:
    • stream:文件指针。
  • 返回值:
    • 如果已到达文件末尾,返回非零值;
    • 否则返回 0。

12. ferror

int ferror(FILE *stream);
  • 参数:
    • stream:文件指针。
  • 返回值:
    • 如果流上发生错误,返回非零值;
    • 否则返回 0。

13. rewind

void rewind(FILE *stream);
  • 参数:
    • stream:文件指针。
  • 返回值:
    • 无返回值。将文件指针移动到文件开头,并清除错误标志。

14. ftell

long ftell(FILE *stream);
  • 参数:
    • stream:文件指针。
  • 返回值:
    • 返回当前文件指针的位置(从文件开始处算起的字节数);
    • 出错返回 -1L。

15. fseek

int fseek(FILE *stream, long offset, int whence);
  • 参数:
    • stream:文件指针。
    • offset:偏移量(字节数)。
    • whence:起点位置,如 SEEK_SET(文件开头)、SEEK_CUR(当前位置)、SEEK_END(文件末尾)。
  • 返回值:
    • 成功返回 0;
    • 出错返回非零值。

✅ 示例代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 定义一个简单的结构体
typedef struct {
    int id;
    char name[32];
    float salary;
} Employee;

int main() {
    FILE *bin_file = fopen("employees.dat", "wb+");
    FILE *txt_file = fopen("data.txt", "w+");

    if (!bin_file || !txt_file) {
        perror("文件打开失败");
        return EXIT_FAILURE;
    }

    // ========== fwrite + fread 示例 ==========
    Employee emp1 = {101, "Alice", 8000.0f};
    Employee emp2 = {0};

    // 写入结构体到二进制文件
    fwrite(&emp1, sizeof(Employee), 1, bin_file);
    rewind(bin_file);  // 回到文件开头

    // 读取结构体
    fread(&emp2, sizeof(Employee), 1, bin_file);

    printf("从二进制文件读取的数据:\n");
    printf("ID: %d, Name: %s, Salary: %.2f\n", emp2.id, emp2.name, emp2.salary);

    // 检查是否有错误
    if (ferror(bin_file)) {
        printf("二进制文件读写出错。\n");
        clearerr(bin_file); // 清除错误标志
    }

    // ========== fprintf + fscanf 示例 ==========
    // 写入格式化文本数据
    fprintf(txt_file, "%d %s %.2f\n", emp1.id, emp1.name, emp1.salary);
    rewind(txt_file);  // 回到文件开头

    // 读取格式化文本数据
    Employee emp3 = {0};
    fscanf(txt_file, "%d %s %f", &emp3.id, emp3.name, &emp3.salary);

    printf("\n从文本文件读取的数据:\n");
    printf("ID: %d, Name: %s, Salary: %.2f\n", emp3.id, emp3.name, emp3.salary);

    if (ferror(txt_file)) {
        printf("文本文件读写出错。\n");
    }

    // 关闭文件
    fclose(bin_file);
    fclose(txt_file);

    return 0;
}

🔍 输出结果(示例)

从二进制文件读取的数据:
ID: 101, Name: Alice, Salary: 8000.00

从文本文件读取的数据:
ID: 101, Name: Alice, Salary: 8000.00

操作系统实验——文件管理(fopen()、fclose()、fread()、fwrite()的使用)实现文件的复制 操作系统实验——文件管理(fopen()、fclose()、fread()、fwrite()的使用)实现文件的复制 一:实验目的 1、熟悉Linux文件系统的文件和目录结构,掌握Linux文件系统的基本特征; 2、模拟实现Linux文件系统的简单I/O流操作:备份文件。 二:实验内容 1、浏览Linux系统根目录下的子目录,熟悉每个目录的文件和功能; 2、设计程序模拟实现Linux文件系统的简单I/O流操作:备份文件。 三:实验原理 目录 描述 / 根目录 /bin 做为基础系统所需要的最基础的命令就是放在 阅读详情

相关推荐

fread、fwrite、fopen函数的简单使用和open、read、write区别解析

fread、fwrite、fopen函数的简单使用和open、read、write区别解析一、fread、fwrite、fopen和read、write、open的区别解析:1、fopen和open区别:(1)来源:(2)移植性:(3)缓冲文件系统:(4)非缓冲文件系统:(5)主要区别:2、read/write和fread/fwrite区别:(1)fread是带缓冲的,read不带缓冲(2)其他:二、fread、fwrite、fopen解析(1)函数原型:(2)代码演示:(3)读写用在结构体上: 一、fre

正弦定理的博客 1615

fopen参数汇总

函数名称:     fopen 函数原型:     FILE *fopen(char * filename,char * mode); 函数功能:     以mode指定的方式打开名为filename的文件 函数返回:     成功,返回一个文件指针(文件信息区的起始地址),否则返回0 参数说明:     filename-文件名称,mode-打开模式:           

Allyli0022的专栏 2849

玩转Isaac Sim动态控制:从随机舞动到精准操控Franka的5种控制模式实测

本文深入实测了在NVIDIA Isaac Sim仿真平台中,利用Dynamic Control模块对Franka机械臂进行精准操控的五种核心模式:位置控制、单关节位置控制、速度控制、单关节速度控制和力矩控制。通过详细的代码示例和对比分析,阐述了每种模式的适用场景、参数调优技巧及从随机运动到闭环控制的实现路径,为机器人算法验证提供了实用指南。

night的博客 807

fopen函数的各种参数 r+ w+ a+ ab+

文件mode参数 函数 : FILE *fopen(const char * path,const char * mode); const char * mode具有以下参数: r :打开只读文件,该文件必须存在。 w :打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。 a :以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。 rb :打开一个二进制文件,只允许读取操作 wb :打开(创建)一个二

XiBEiB的博客 1万+

python 识别滑块验证码

博客来源于: https://www.cnblogs.com/wyh0923/p/16528354.html # -*- coding: utf-8 -*- # https://gov.pkulaw.cn/ 1. import io 2. import json 3. from pathlib import Path 4. from PIL import Image 5. import bas...

2102

什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

这个问题主要讲Xcode编译器的认知,在学习iOS之前有必要学习一下Objective-C的编译环境。 在了解LLVM和Clang之前,先得了解一下什么是编译器。 编译器是一种计算机程序,它将某种编程语言(高级编程语言)写成的源代码转换成另一种编程语言(低级编程语言)。一个现代编译器的主要工作流程为:源代码->预处理器->编译器->目标代码->链接器->可执行程序...

Welcome~ 9723

文件操作 ——fopen()函数

格式—— fopen参数 “wb”——只写打开或建一个二进制文件,只允许写数据(会覆 盖之前数据) “ab”——追加打开一个二进制文件,并在文件尾部追加数据 “rt+”——读写打开或建立一个文本文件,充读读写 “wt+”————读写打开或建立一个文本文件,允许读写 “at+”——读写打开一个文本文件,允许读,或在文件未追加数据 “rb+”——读写打开一个二进制文件,允许读和写 “wb+” ——读写打开或建立一个二进制文件,允许读和常用函数——...

Ming_julao的博客 8738

告别玄学:手把手配置EtherCAT从站PDI接口与同步采样(含Sync/Latch信号实战)

本文详细解析了EtherCAT从站PDI接口配置与同步采样技术,涵盖微处理器通信与直接驱动IO模式选择、同步采样四大触发模式(SOF、Latch_in、Sync0/Sync1)及输出触发实战。通过伺服驱动器实例,帮助工程师突破配置难点,实现高精度同步控制,提升工业自动化系统性能。

weixin_30667649的博客 482

【C语言】fopen函数参数介绍

【代码】【C语言】fopen函数参数介绍。

qq_41744151的博客 953

车底盘:阿克曼转向和四轮差速

特性四轮差速四轮转向阿克曼转向转向方式控制左右轮组速度差控制四个轮子的角度控制前轮角度(后轮固定)运动原理滑移摩擦(搓着走)纯滚动(滚着走)近乎纯滚动(低速时)能耗高低(实现纯滚动时)中轮胎磨损非常严重小中灵活性高(可原地旋转)极高(可全向移动)低(转弯半径大)控制精度较低(受地面摩擦影响大)极高高机械复杂度低(通常只需2个驱动电机)极高(需4个转向+4个驱动执行器)中(需1个转向+2个驱动执行器)典型应用坦克、履带车辆、简单AGV、扫地机器人豪华轿车、高性能全向AGV。

bing_feilong的博客 1919

ESP32+LED12864液晶屏实战:手把手教你显示中文与自定义图标(附完整代码)

本文详细介绍了如何使用ESP32单片机驱动带字库的LED12864液晶屏,实现中文显示与自定义图标。从硬件选型、接线方案到驱动编写、字库解析,提供了完整的实战代码与优化技巧,并最终构建了一个智能家居控制面板的完整示例项目。

weixin_29212867的博客 145

【C语言】文件操作的介绍

数据文件操作的介绍

xboll2020的博客 484

PSIM+PIL+CCS三剑客:手把手教你搞定DSP28335的软硬件联合调试

本文详细介绍了如何利用PSIM、PIL与CCS三款工具,实现DSP28335的软硬件联合调试。通过搭建兼容环境、从PSIM仿真生成PIL代码,再到实战联合调试与问题诊断,手把手指导开发者构建从虚拟模型到实际硬件的完整验证闭环,有效提升电力电子与电机驱动等领域的开发效率与可靠性。

weixin_29183637的博客 185

标准 I/O 库函数:fopen()、fwrite()、fread()、fclose()详解

fopen()、fwrite()、fread()、fclose()等函数属于标准 I/O 库函数,调用这些函数需要包含头文件。这些函数都是构建于文件 I/O(open()、read()、write()、lseek()、close()等)这些系统调用之上的。

Penseur2018的博客 3663

网口通信实战(C#完整版):基于TCP协议的工业仪表数据采集系统开发

工业现场中80%的智能仪表(压力/温度/液位/流量/数显仪表)、采集模块、测控终端均支持TCP网口通信,这类设备的TCP通信有鲜明的工业特性:基于字节流的自定义二进制协议、一问一答的主从通信模式、对数据完整性/稳定性要求极高。本次实战是纯工业级落地项目,基于C# WinForm + .NET Framework 4.8(工业上位机标配)✅纯原生无依赖:零第三方类库/控件,仅用C#原生,源码可100%复用、无引用冲突、工控机完美兼容;✅双采集模式完美适配:同时实现「单次手动采集」+「连续自动采集」

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1799

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Linux应用编程之fopen()、fclose()、fread()、fwrite()函数

1、fopen()函数调用fopen()函数可以打开或创建一个文件。 #include <stdio.h> FILE *fopen(const char *path, const char *mode); path:参数 path 指向文件路径,可以是绝对路径、也可以是相对路径。 mode:参数 mode 指定了对该文件的读写权限,是一个字符串。 返回值:调用成功返回一个指向 FILE 类型对象的指针(FILE *),该指针与打开或创建的文件相关联, 后续的标准 I/O 操作将围绕

shengnan89的博客 6472

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Linux-C 文件操作

Linux-C 文件操作 一、简述 记--Linux环境下C语言编程的文件操作。 两种操作文件的方式: 1、系统I/O:系统调用接口,open(), read(), write(), lseek(), close()。是操作系统直接提供的编程接口(API)。 2、标准/IO:标准库的I/O函数,fopen(), frea...

Genven_Liang的博客 4万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

标准C库函数:fopen(),fwrite(),fread(),fseek(),fclose()的基本用法。

① const char *pathname:文件名/路径,这是char型指针,须在”文件名/路径“上加上双引号;② const char *mode:文件的操作权限,这里也是字符型指针,须在“操作权限”上加双引号;实际写入长度为size_t nmemb,返回值为块成功写入块的nmemb数量。② size_t size: size是的块长度;② size_t size: size是块长度。③ size_t nmemb: nmemb是块的数量;

m0_74985965的博客 3125

【Linux/C++文件篇(一) 】标准I/O与文件I/O基础 :一文掌握文件操作的核心

本文深入解析了C/C++中的标准I/O与文件I/O系统。标准I/O通过流抽象和缓冲区机制提高效率,适合常规文件操作;文件I/O直接使用系统调用,无缓冲但更底层灵活。文章详细对比了两者的特性差异、适用场景,并提供了丰富的代码示例演示各种I/O函数的使用方法(如fopen/fclose、read/write等),以及缓冲区管理、文件定位等关键技术要点。最后给出了选择建议:标准I/O适合常规操作和可移植需求,文件I/O适合底层控制和高性能场景。

2501_93095927的博客 3890

Linux-C/C++《C/6、标准 I/O 库》(I/O 库简介、FILE 指针等)

 在上一部分介绍应用编程概念时向大家介绍了系统调用与标准C语言函数库(以下简称标准C库),所谓标准I/O库则是标准C库中用于文件I/O操作(譬如读文件、写文件等)相关的一系列库函数的集合,通常标准I/O库函数相关的函数定义都在头文件<stdio.h>中,所以我们需要在程序源码中包含<stdio.h>头文件。

旅行者的博客 882

菜鸟教程:fopen()、fwrite()、fread()、fseek()、flcose()

标准IO函数。

qq_48087696的博客 1799

FILE 指针、标准输入、标准输出和标准错误、打开文件 fopen()、读文件和写文件

文件 I/O 函数(open()、read()、write()、lseek()等)都是围绕文件描述符进行的,当调用 open()函数打开一个文件时,即返回一个文件描述符 fd,然后该文件描述符就用于后续的 I/O 操作。标准输入设备指的就是计算机系统的标准的输入设备,通常指的是计算机所连接的键盘; 标准输出设备指的是计算机系统中用于输出标准信息的设备,通常指的是计算机所连接的显示器; 标准错误设备则指的是计算机系统中用于显示错误信息的设备,通常也指的是显示器设备。

Bit_Dong的博客 2838

[Linux函数详解]--标准IO--fopen、fread、fwrite、fclose函数

fopen、fread、fwrite、fclose

2403_88357484的博客 1279

C语言:文件函数 fopen(),fclose(),fwrite(),fread()

文件打开函数:fopen fopen函数是在当前目录下打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式);  ex: FILE *fr = fopen(srcpath,"r"); FILE *fw = fopen(despath,"w"); FILE *fr =fopen("c:\\1.test","rb"); 其意义是打开C驱动器磁盘

qq_40657299的博客 4121

C语言标准I/O库完全指南:掌握stdio.h的强大功能

stdio.h(Standard Input Output Header)是C语言的标准输入输出头文件,它定义了一系列用于处理输入输出操作的函数、类型和宏。从控制台交互到文件处理,从格式化输出到错误处理,stdio.h为我们提供了完整的I/O解决方案。stdio.h是C语言I/O操作的基石,提供了从简单字符操作到复杂文件处理的完整解决方案。通过掌握这些函数,你可以:✅ 高效处理各种文件格式✅ 实现健壮的错误处理✅ 优化程序I/O性能✅ 构建复杂的文件处理应用。

2503_91568450的博客 2106

fread与read的区别---open和fopen的区别--fread函数和fwrite函数

fread与read的区别---open和fopen的区别--fread函数和fwrite函数 fread与read的区别 f是ANSI的C标准库。而后者的是UNIX下的系统调用。 fread带有缓冲,是read的衍生,或者说fread是通过read实现的 要想直接和硬件打交道,必须用read fopen/fread 是C标准的库函数,操作的对象

非淡泊无以明志,非宁静无以致远 2万+
上一篇: 【Linux基础】系统 I/O 函数:open read write lseek等函数原型、参数说明以及返回值描述
下一篇: 【C语言】标准库字符串操作strstr、strcmp函数原型、参数说明以及返回值描述
思路可以啊
博客等级 码龄6年 91粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值