C语言:文件操作

文章目录

  • 每日一言
  • 文件操作
    • 文件的打开和关闭操作:
    • 文件的读写操作:
  • 结语

每日一言

If I have seen further, it is by standing on the shoulders of giants.
如果我能看得更远,是因为站在巨人的肩膀上。

文件操作

C语言文件操作主要通过文件指针进行。文件指针是一个指向文件的指针,它用于在文件中进行读写操作。在C语言中,文件指针的类型是FILE,需要通过fopen函数打开文件并返回文件指针。

文件的打开和关闭操作:

  1. fopen:打开文件

    FILE *fopen(const char *filename, const char *mode);
    

    第一个参数是文件名,第二个参数是打开文件的模式。常见的模式有:

    • “r”:只读模式,文件必须存在,如果文件不存在则打开失败。
    • “w”:只写模式,如果文件不存在则创建文件,如果文件存在则清空文件内容。
    • “a”:追加模式,如果文件不存在则创建文件,如果文件存在则在文件末尾追加内容。
    • “r+”:读写模式,打开一个已存在的文件进行读写操作
    • “w+”:读写模式,如果文件不存在则创建新文件,如果文件已存在则清空文件内容
    • “a+”:读写模式,如果文件不存在则创建新文件,如果文件已存在则在文件末尾追加内容 函数返回一个指向文件的指针,如果打开文件失败则返回NULL。
    • “rb”、“wb”、“ab”:以二进制模式打开文件。

    fopen函数打开文件成功后,返回文件指针;失败则返回NULL。

  2. fclose:关闭文件

    int fclose(FILE *stream);
    

    参数是要关闭的文件指针。关闭文件后,不再允许在该文件上进行读写操作。

文件的读写操作:

  1. fgetc:读取字符

    int fgetc(FILE *stream);
    

    参数是要读取字符的文件指针。函数返回读取的字符,如果读取成功则返回字符的ASCII码值,如果读到文件末尾则返回EOF。

  2. fputc:写入字符

    int fputc(int character, FILE *stream);
    

    第一个参数是要写入的字符的ASCII码值,第二个参数是要写入字符的文件指针。函数返回写入的字符,成功返回字符的ASCII码值,失败返回EOF。

  3. fgets:读取字符串

    char *fgets(char *str, int num, FILE *stream);
    

    第一个参数是存储读取字符串的缓冲区,第二个参数是最多读取的字符数(包括字符串结尾的’\0’),第三个参数是要读取字符串的文件指针。函数返回读取的字符串,如果读取成功则返回str指针,否则返回NULL。

  4. fputs:写入字符串

    int fputs(const char *str, FILE *stream);
    

    第一个参数是要写入的字符串,第二个参数是要写入的文件指针。函数返回写入成功的字符数,失败返回EOF。

  5. fprintf:格式化写入

    int fprintf(FILE *stream, const char *format, ...);
    

    第一个参数是要写入的文件指针,第二个参数是格式化字符串,后面可以跟着格式化参数。函数返回写入成功的字符数,失败返回EOF。

  6. fscanf:格式化读取

      int fscanf(FILE *stream, const char *format, ...);
    

    第一个参数是要读取的文件指针,第二个参数是格式化字符串,后面可以跟着要读取的变量。函数返回成功匹配和赋值的变量数,失败返回EOF。

  7. sscanf: 读取格式化输入

    int sscanf(const char *str, const char *format, ...);
    

    str为要读取数据的字符数组,format为格式字符串,后面的…表示格式字符串中的各个格式符对应的变量。

    例如:

    #include <stdio.h>
    int main() 
    {
    char str[100];
    int num;
    sprintf(str, "123");  // 将字符串"123"存储到str中
    sscanf(str, "%d", &num);  // 将str中的整数读取到num中
    printf("num: %d\n", num);  // 输出num的值
    return 0;
    }
    

    此时,name变量将得到字符串"John",age变量将得到整数20。

  8. sprintf:将格式化的数据输出到一个字符数组中。

    int sprintf(char *str, const char *format, ...);
    

    str为输出结果存放的字符数组,format为格式字符串,后面的…表示格式字符串中的各个格式符对应的变量。
    例:

    #include <stdio.h>
    int main() 
    {
    char str[100];
    int num = 123;sprintf(str, "%d", num);  // 将num的值转换为字符串并存储到str中printf("str: %s\n", str);  // 输出str的值return 0;
    }
    
  9. ftell:获取文件指针的当前位置

    long ftell(FILE *stream);
    
  10. fseek:设置文件指针的位置

    int fseek(FILE *stream, long offset, int origin);
    

    其中,stream是要定位的文件指针,offset是偏移量,origin是偏移量相对位置,可以是以下值之一:

    • SEEK_SET:从文件起始位置开始偏移
    • SEEK_CUR:从当前位置开始偏移
    • SEEK_END:从文件末尾位置开始偏移 函数返回0表示定位成功,返回非0值表示定位失败。
  11. rewind:重置文件指针

    void rewind(FILE *stream); 
    

    将已打开文件的指针重新定位到文件的开头,从而可以重新读取文件的内容。


结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)
可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/226723.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot和微信小程序的校园快递平台系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot和微信小程序的校园快递平…

AI浅谈:计算机视觉(CV)技术的优势和挑战

目录 一、计算机视觉技术的优势 1.效率和精度提高 2.提高安全性 3.促进自动化 4.促进科学研究 5.促进商业发展 二、计算机视觉技术的挑战 1.环境变化 2.精度问题 3.隐私和安全问题 4.数据质量 5.系统复杂度 以上是对计算机视觉技术的优势和挑战的概述&#xff0c;…

《哥德尔证明》阅读笔记——一致性问题的绝对证明

前言 追问一个公理系统的一致性&#xff0c;我们知道一个模型法&#xff0c;即从现实经验中找到一个模型&#xff0c;能将所有公理映射成此模型的真陈述&#xff0c;但很多系统模型是无穷的&#xff0c;比如想检验“空间中两点能确定一条直线”这个欧氏几何公理在空间模型中的…

MQTT 介绍与学习 —— 筑梦之路

之前写过的相关文章&#xff1a; MQTT协议&#xff08;转载&#xff09;——筑梦之路_mqtt url-CSDN博客 k8s 部署mqtt —— 筑梦之路-CSDN博客 CentOS 7 搭建mqtt服务——筑梦之路_腾讯云宝塔搭 centos 7.9.2009 x86_64 建标准mqtt服务器-CSDN博客 mqtt简介 MQTT&#xff…

Js中数组的实用语法

1. 循环 a. 循环项 const arr [1, 2, 3];for (let item of arr) {console.log(item); } // 输出&#xff1a;1 2 3b. 循环键 const arr [1, 2, 3];for (let key in arr) {console.log(key); } // 输出&#xff1a;0 1 2c. 循环键值对 const arr [1, 2, 3];arr.forEach((…

Mysql数据库 19.Mysql 锁

MySQL锁 锁&#xff1a;锁是计算机用以协调多个进程间并发访问同一共享资源的一种机制&#xff0c;在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源&#xff0c;如何保证数据并发访问的一…

SpringBoot 自动装配原理---源码详解

目录 SpringBoot 自动装配原理源码流程详解&#xff1a;流程总结&#xff1a;条件匹配解释&#xff1a;其他解释&#xff1a; SpringBoot 自动装配原理 源码流程详解&#xff1a; 1、先看启动类&#xff0c;启动这个main方法&#xff0c;然后调用这个run方法。 2、把 启动类作…

南京邮电大学数据库实验二

1. 用create database命令创建电影数据库(MovieDB)。 create database MovieDB; 在创建表之前需调用一下指定的数据库&#xff1a; use MovieDB; 2.在电影数据库中用create table 命令创建如下5个关系模式&#xff1a; 创建movies表&#xff1a; create table Movies( ti…

城市货车通行码二维码解析

目录 说明 界面 下载 城市货车通行码二维码解析 说明 二维码扫描信息为&#xff1a; tmri://12123?ywlx1041&ewmeyJ0eHpiaCI6IjUxMDcwMDAwMDE0MyIsInR4em1jIjoiQeivgSIsImhwemwiOiIwMiIsImhwaG0iOiLlt51CMkwzMjYiLCJrc3JxIjoiMjAyMS0xMS0yOCIsImpzcnEiOiIyMDIyLTEyL…

虚幻学习笔记12—C++类的实例化

一、前言 本系列如无特殊说明使用的虚幻版本都是5.2.1&#xff0c;VS为2022版本。在Unity中通常创建的脚本都默认继承了MonoBehavior&#xff0c;都是不能再用代码New而实例化的&#xff0c;虚幻也是一样不能直接New来实例化。在Unity中是通过Instantiate方法来实例化一个游戏对…

C++ lambda表达式

写法格式 lambda表达式的写法格式如下&#xff1a; [capture-list] (parameters) mutable -> ret { statement } 各部分的说明为&#xff1a;[capture-list] : 捕获列表&#xff0c;编译器根据[]来判断接下来的代码是否为lambda函数&#xff0c;捕捉列表能够捕捉上下文中…

【ArcGIS Pro微课1000例】0055:Pro中如何处理个人数据库(.mdb)

文章目录 原因分析解决方案使用ArcGIS Pro的用户应该已经发现个人地理数据库(.mdb)不能使用了。随着ESRI的软件技术革新,在ArcGIS Pro中不再支持且将来也不会支持个人地理数据库(.mdb)。这个确实很烦人,很多项目还是在使用mdb数据库的。不过ESRI也给出了一些解决办法,不…

二叉搜索树的简单C++类实现

二叉搜索树&#xff08;BST&#xff09;是一种重要的数据结构&#xff0c;它对于理解树的操作和算法至关重要。本文将通过一个C示例来展示如何实现一个BST&#xff0c;并在插入和删除节点时提供清晰的输出&#xff0c;以帮助可视化这些操作的过程。 二叉搜索树的节点结构 首先…

Elasticsearch 8.9 search命令执行查询源码

一、相关的API的handler1、接收HTTP请求的handler2、往数据节点发送查询请求的action(TransportSearchAction)3、通过transportService把查询请求发送到指定的数据节点 二、数据节点收到请求的处理逻辑1、尝试从缓存中加载查询结果2、不通过缓存查询&#xff0c;直接执行查询(1…

Elasitcsearch--解决CPU使用率升高

原文网址&#xff1a;Elasitcsearch--解决CPU使用率升高_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决ES导致的CPU使用率升高的问题。 问题描述 线上环境 Elasticsearch CPU 使用率飙升常见问题如下&#xff1a; Elasticsearch 使用线程池来管理并发操作的 CPU 资源。…

智慧农业大数据可视化UI,数据展示平台(免费可视化大屏模版PS资料)

大屏幕展示方式可以实现信息的直观呈现与交互操作&#xff0c;使农业生产者能够一目了然地掌握有关农情、天气、土壤等数据信息&#xff0c;从而科学决策。智慧农业大数据可视化大屏是提升农业生产效益的一种重要工具。 现分享亩产效益指标、农业大数据可视化、农业数据展示平…

QEMU源码全解析 —— virtio(11)

接前一篇文章&#xff1a; 上一回对于virtio_balloon_pci_realize函数进行了详细解析。最后讲到在virtio_balloon_pci_realize函数的最后一步调用了object_property_set函数&#xff0c;从而导致了virtio_device_realize函数的执行。本回就来对于virtio_device_realize函数进行…

Flutter工具安装与环境搭建

1、下载 Flutter SDK&#xff0c;下载完成后&#xff0c;在需要放置SDK的地方解压即可。 注意&#xff1a; 请勿将 Flutter 有特殊字符或空格的路径下。请勿将 Flutter 安装在需要高权限的文件夹内&#xff0c;例如 C:\Program Files\。 2、配置环境变量 例如&#xff1a; …

NO-IOT翻频,什么是翻频,电信为什么翻频

1.1 翻频迁移最终的目的就是减少网络的相互干扰&#xff0c;提供使用质量. 1.2 随着与日俱增的网络规模的扩大&#xff0c;网内干扰已成了影响网络的质量标准之一&#xff0c;为了保障电信上网体验&#xff0c;满足用户日益增长的网速需求,更好的服务客户&#xff0c;电信针对…