首页 > 其他分享 >11.2 C语言文件的读写操作

11.2 C语言文件的读写操作

时间:2024-08-30 20:21:12浏览次数:5  
标签:fp 文件 读取 读写操作 写入 11.2 C语言

11.2 C语言文件的读写操作

11.2 C语言文件的读写操作

11.2 文件的读写操作

文件的读写是文件处理中的核心操作,C语言提供了多种函数来实现从文件读取数据和向文件写入数据。

文件的写操作

  • 写字符

    fputc(c, fp); // 将字符c写入文件
    
  • 写字符串

    fputs(str, fp); // 将字符串str写入文件
    
  • 写格式化数据

    fprintf(fp, format, ...); // 将格式化的数据写入文件
    
  • 写数据块

    fwrite(ptr, size, nmemb, fp); // 将数据块写入文件
    

文件的读操作

  • 读字符

    c = fgetc(fp); // 从文件读取一个字符
    
  • 读字符串

    fgets(str, n, fp); // 从文件读取一个字符串,最多读取n-1个字符
    
  • 读格式化数据

    fscanf(fp, format, ...); // 从文件读取格式化的数据
    
  • 读数据块

    fread(ptr, size, nmemb, fp); // 从文件读取一个数据块
    

示例:文件读写

  • 写入文件

    FILE *fp = fopen("example.txt", "w");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    fprintf(fp, "Hello, World!\n");
    fclose(fp);
    
  • 读取文件

    FILE *fp = fopen("example.txt", "r");
    if (fp == NULL) {
        perror("Error opening file");
        return -1;
    }
    char buffer[100];
    while (fgets(buffer, sizeof(buffer), fp) != NULL) {
        printf("%s", buffer);
    }
    fclose(fp);
    

注意事项

  1. 错误检查:每次读写操作后,应检查返回值以确定操作是否成功。

  2. 文件模式:根据需要选择正确的文件打开模式,例如只读(“r”)、只写(“w”)、追加(“a”)等。

  3. 缓冲区管理:对于 freadfwrite 等函数,需要管理好缓冲区的大小和生命周期。

  4. 文本模式与二进制模式:在某些平台上,文本模式和二进制模式的文件操作有所不同,特别是在换行符的处理上。

  5. 文件结束检测:使用 feof 函数检测文件是否已结束,但要注意 feof 只有在尝试过读取并到达文件末尾后才返回非零值。

  6. 清除错误标志:在需要时,可以使用 clearerr 函数清除文件流的错误标志和文件结束标志。

  7. 内存泄漏:对于动态分配的缓冲区,确保在读写操作完成后释放内存。

文件的读写操作是数据处理和数据持久化的基础,掌握这些操作对于进行有效的文件处理非常重要。正确地使用文件读写函数可以提高程序的效率和可靠性。




博主:Python老吕 由衷地感谢 CSDN网站 为我们搭建了一个如此卓越的学习平台,使我们有机会分享知识与经验。

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

《跟老吕学C语言》 ,我们致力于为编程新手提供一个全面、易懂的起点。无论您是刚刚接触编程,还是希望掌握C语言这一强大工具,本专栏都将引导您一步步建立起坚实的基础。

本专栏不仅关注编程技能的提升,同样注重培养您的问题解决能力和代码设计思维。我们将通过实际案例和项目,让您在实践中学习如何构建程序,如何优化代码,以及如何进行有效的错误调试。随着您在编程道路上的不断前行,愿这本专栏成为您的指南针,引领您探索C语言的无限可能。


博主:Python老吕 编写的 《跟老吕学C语言》


  1. C语言基础:这部分将带您了解C语言的起源、特点和应用,并引导您搭建开发环境,编写并运行您的第一个C程序。我们还将介绍基本的数据类型、变量、运算符和控制语句,为您打下坚实的基础。

  2. C语言核心概念:在这部分,我们将深入探讨函数、数组、指针、结构体、联合、枚举和预处理器等核心概念,这些都是理解和使用C语言的关键。

  3. C语言高级编程:高级特性是任何想要精通C语言的开发者必须掌握的。我们将讨论文件操作、动态内存管理、链表以及高级数据结构,这些都是构建复杂程序的基石。

  4. C语言实战项目:理论知识需要通过实践来巩固。在这部分,您将通过开发学生信息管理系统、图专栏管理系统和简易计算器等项目,将所学知识应用于实际问题解决中。


鉴于本专栏各文章教程可能存在的局限性和错误, 博主:Python老吕 诚挚地邀请广大读者在阅读过程中提出宝贵的意见和建议。如果您在学习本专栏教程时遇到任何问题,或有任何技术交流的意愿,欢迎在文章评论区留言,或通过CSDN私信与老吕取得联系。老吕将及时回复您的留言,并与您共同探讨,以期为大家提供更为精准和有效的帮助。老吕珍视每一位读者的反馈和支持,期待与您共同学习、共同进步,共同创造美好的未来!再次感谢大家的理解与支持!



标签:fp,文件,读取,读写操作,写入,11.2,C语言
From: https://blog.csdn.net/molangmolang/article/details/141575870

相关文章

  • 【C语言】内存函数
    文章目录前言一、memcpy的使用和模拟实现1.memcpy的使用2.模拟实现memcpy函数二、memmove的使用和模拟实现1.memmove的使用2.模拟实现memmove函数三、memset函数的使用四、memcmp函数的使用前言`内存函数的头文件都是<string.h>介绍了memcpy、memmove、memset......
  • C语言深度复习【数组和指针】
    目录一.数组和指针1.1数组指针1.2指针数组1.3函数指针1.4const和指针1.5sizeof和指针和数组1.6strlen和字符数组一.数组和指针1.1数组指针一个数组指针实际上是指指向数组的指针。当你有一个数组类型作为函数参数时,它在函数内部被当作一个指针来处理。例......
  • C语言详细笔记--构造数据类型(结构体数组)
    目录一、结构体数组的定义二、结构体数组的初始化三、结构体数组的引用一、结构体数组的定义structstuscoretype{intstuid;intscore[3];doubleaverage;};structstuscoretypestu[3];上面语句定义了一个名为stu的数组,数组有三个元素,每个元素的类......
  • 2023数据结构408程序题C语言
    如A=(0,5,5,3,5,7,5,5),则5为主元素;又如A=(0,5,5,3,5,1,5,7),则A中没有主元素。假设A中的n个元素保存在一个一维数组中,请设计一个尽可能高效的算法,找出A的主元素。若存在主元素,则输出该元素;否则输出-1。#include<stdio.h>#include<stdlib.h>//定义结构体数组S,其中的元......
  • C语言基础——函数详解
    目录 函数的概述1函数的概念2函数的意义 函数的定义和使用1函数的定义2函数的调用2.1在同一文件中函数定义后函数调用2.2在同一文件中函数定义前函数调用2.3调用其它文件中定义的函数2.3.1在函数调用文件中进行声明2.3.2在头文件中进行函数的声明 函......
  • 王道C语言(备份)
    指针与一维数组函数调用的本质是值传递数组传递是弱化为指针如果指针变量已指向数组中的一个元素,则p+1指向同一数组的下一个元素,执行p+1并不是将p的值(地址)加1,而是加上一个数组元素所占用的字节数。#include<stdio.h>intmain(){ inta[3]={2,7,8}; int*p; intj;......
  • C语言 备份
    scanf读取原理行缓冲:标准缓存区读入字符‘20\n’,会打印输出20,紧接着的scanf,会打印输出\n,标准输入缓冲区有\n,scanf(c=%c,&c),直接读取缓冲区的\n字符输出。scanf匹配规则:scanf函数在读取整型数、浮点数、字符串会忽略'\n'字符判断闰年#include<stdio.h>intmain(){ in......
  • C语言涉及问题(文件IO与数组和指针)
    一、文件IO相关1、标准出错、输入、输出三者的缓冲机制是什么?标准出错(stderr):属于不缓冲机制,数据直接写入设备标准输入(stdin)和标准输出(stdout):属于行缓冲和全缓冲,行缓冲时需要用'\n'分隔,全缓冲是缓冲区满才会写入或者输出。冲刷缓冲函数:fflush();无论是如果想将全缓冲......
  • C语言--运算符3
    自增自减运算符i++,i--运算符在后,在表达式中先用i的值,下条语句i的值自增或者自减#include<stdio.h>intmain(){inti=1;intnum;num=i++;printf("num=%d,i=%d\n",num,i);//num=1,i=2return0;}++i先加,后用#include<stdio.h>intmain(){inti=1;intnum;......
  • C语言典型例题54
    《C程序设计教程(第四版)——谭浩强》例题4.6用for语句实现1+2+3+4+……+100。代码://《C程序设计教程(第四版)——谭浩强》//例题4.6用for语句实现1+2+3+4+……+100。#include<stdio.h>intmain(){ intx=0; intsum=0; inti=0; for(i=1;i<=100;i++) { x=x......