当前位置: 首页 > news >正文

如何进行文件操作

        在 C 语言中,文件操作是通过标准库函数(如 fopenfclosefprintf 等)来完成的。fopen 函数用于打开文件,它的第二个参数是一个字符串,指定了文件的打开模式。常见的模式包括 "w""a""r" 等,每种模式有不同的用途和行为。


1. "r":只读模式(Read)

  • 作用: 打开文件用于读取。

  • 特点:

    • 文件必须存在,否则 fopen 会返回 NULL
    • 不能写入文件。
  • 示例:

    FILE *file = fopen("example.txt", "r");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    
    

2. "w":只写模式(Write)

  • 作用: 打开文件用于写入。

  • 特点:

    • 如果文件存在,内容会被清空(覆盖)。
    • 如果文件不存在,会创建一个新文件。
    • 不能读取文件。
  • 示例:

    FILE *file = fopen("example.txt", "w");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    fprintf(file, "Hello, World!\\\\n");
    fclose(file);
    
    

3. "a":追加模式(Append)

  • 作用: 打开文件用于追加写入。

  • 特点:

    • 如果文件存在,写入的数据会追加到文件末尾。
    • 如果文件不存在,会创建一个新文件。
    • 不能读取文件。
  • 示例:

    FILE *file = fopen("example.txt", "a");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    fprintf(file, "This is appended text.\\\\n");
    fclose(file);
    
    

4. "r+":读写模式(Read and Write)

  • 作用: 打开文件用于读取和写入。

  • 特点:

    • 文件必须存在,否则 fopen 会返回 NULL
    • 写入数据时会从文件开头覆盖原有内容。
    • 可以通过 fseek 调整文件指针的位置。
  • 示例:

    FILE *file = fopen("example.txt", "r+");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    fseek(file, 0, SEEK_END); // 将文件指针移动到末尾
    fprintf(file, "This is added text.\\\\n");
    fclose(file);
    
    

5. "w+":读写模式(Write and Read)

  • 作用: 打开文件用于读取和写入。

  • 特点:

    • 如果文件存在,内容会被清空(覆盖)。
    • 如果文件不存在,会创建一个新文件。
    • 可以通过 fseek 调整文件指针的位置。
  • 示例:

    FILE *file = fopen("example.txt", "w+");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    fprintf(file, "This is new content.\\\\n");
    fseek(file, 0, SEEK_SET); // 将文件指针移动到开头
    char buffer[100];
    fgets(buffer, 100, file); // 读取文件内容
    printf("File content: %s", buffer);
    fclose(file);
    
    

6. "a+":追加读写模式(Append and Read)

  • 作用: 打开文件用于追加写入和读取。

  • 特点:

    • 如果文件存在,写入的数据会追加到文件末尾。
    • 如果文件不存在,会创建一个新文件。
    • 读取操作可以从文件开头开始,但写入操作只能在文件末尾进行。
  • 示例:

    FILE *file = fopen("example.txt", "a+");
    if (file == NULL) {
        printf("文件打开失败!\\\\n");
        return 1;
    }
    fprintf(file, "This is appended text.\\\\n");
    fseek(file, 0, SEEK_SET); // 将文件指针移动到开头
    char buffer[100];
    fgets(buffer, 100, file); // 读取文件内容
    printf("File content: %s", buffer);
    fclose(file);
    
    

7. 二进制模式

在模式字符串中添加 "b" 可以以二进制模式打开文件(例如 "rb""wb""ab" 等)。二进制模式与文本模式的区别在于:

  • 文本模式:会对换行符进行特殊处理(例如 Windows 中将 \n 转换为 \r\n)。
  • 二进制模式:直接读写原始数据,不做任何转换。

8. 总结

模式描述
"r"只读模式,文件必须存在。
"w"只写模式,文件存在则清空,不存在则创建。
"a"追加模式,文件存在则追加,不存在则创建。
"r+"读写模式,文件必须存在。
"w+"读写模式,文件存在则清空,不存在则创建。
"a+"追加读写模式,文件存在则追加,不存在则创建。

http://www.dtcms.com/a/87697.html

相关文章:

  • 【QT】Qt creator快捷键
  • Ftrans飞驰云联受邀参加“2025汽车零部件CIO年会“并荣获智象奖
  • 【python】OpenCV—Hand Detection
  • Packaging Process
  • 【随手记】支持多模态输入的 AI Chatbot App
  • 抓包软件【Fiddler】
  • .Net SSO 单点登录方式
  • 软考笔记——操作系统
  • SAP GUI Script for C# SAP脚本开发快速指南与默认主题问题
  • 2、稳定排序二——插入排序
  • 注册中心之Nacos相较Eureka的提升分析
  • JavaScript中的宏任务和微任务
  • Spring框架漏洞攻略
  • MyBatis-Flex、MyBatis-Plus 与 Fluent-Mybatis 的比较分析
  • FastStoneCapture下载安装教程(附安装包)专业截图工具
  • 环境评价分析中土地利用现状图的制作方法
  • 基于TweenMax和SVG的炫酷弹性进度条动画特效
  • [实操]MySQL8 读写分离后,配合redis的方法与步骤
  • 水星(MERCURY)监控初始化的恢复和转码方法
  • 【C语言】多进程/多线程
  • DeepSeek-R1 现已作为全托管无服务器模型在 Amazon Bedrock上线。
  • 反向 SSH 隧道技术实现内网穿透
  • 数据库误更新操作 如何回滚
  • VMware安装ubuntu22.04.5 server
  • Java并发编程面试汇总
  • Python学习第二十三天
  • 全面了解 Cookies、Session 和 Token
  • 【Java语言】学习笔记-08面向对象【中级】包、访问修饰符、封装、继承、多态、Super、Override(重写)、Object、断点调试等细节详解(上)
  • 6.1、认证技术基础与原理
  • [unity 点击事件] 区域响应点击事件,排除子节点区域,Raycast Target 应用