c语言之文件学习

2023-05-16

文件是相关信息的集合

文字信息、声音信息、图形信息

文件的取名:主文件名.扩展名

文件的分类:(c 程序中)

A:文本文件

B:二进制文件(data)把结构体的信息写入的文件

c程序可以对文件进行操作

读操作:从文件里面把文件的内容读取出来,并输出到屏幕。

它不会改变文件的内容

写操作:把一些内容往文件里面写入。

它一定会改变文件的内容

c程序如何对文件操作的呢?

通过文件指针和一些函数对文件进行操作的

什么是文件指针?

这个指针它是用来存放文件的首地址,这个指针是专用来指向文件的。

文件指针定义的格式:

FILE *指针名;

Ex:    FILE *fp; //定义了一个指针fp,这个指针以后只能指向文件,以后要把文件的首地址赋给该指针.

如何给文件指针赋值:一般是通过fopen函数来赋值

Fopen功能:

A:打开一个文件。

B:同时会返回打开的那个文件的首地址。

格式:fopen(“要打开的文件名”,”打开的方式”);

C:该函数实际上就是地址

说明:

1、打开方式是表明打开文件之后要读还是要写

2、打开方式有几种:

        r:要打开文件之后要读文件   read 读文本文件

w:要打开文件之后要写文件         write, 用新数据覆盖以前的内容

a:要打开文件之后要追加文件  append,把新的数据加到末尾

如果打开方式中加了一个b就表示对二进制文件进行操作

rb:要打开二进制文件,进行读

wb:要打开二进制文件,进行写

ab:要打开二进制文件,进行追加

3、如果打开的文件名中含有路径,里面的\要用“\\”来表示

fp=fopen(“打开的文件名”,”打开方式”);

 

fopen(“c:\\chen\\my.txt”,”r”);                   //打开my.txt文件并进行读操作

关闭文件:

1、通过fopen函数能够打开一个文件,然后对文件操作

2、操作完成后,一定要关闭文件

3、格式:fclose(文件指针名);

程序代码的一般格式:

FILE *fp;

fp=fopen(“打开的文件名”,”打开方式”);把文件指针赋给具体文件

然后对文件进行操作

fclose(fp);

 

 

对文件进行操作:

1、fgetc函数:从fp指向的文件里面读出一个字符,r

格式:字符型变量=fgetc(fp);                  //fp是一个文件指针

文件一定要以读的方式来打开/

2、fputc函数:向fp指向的文件里面写入一个字符w

格式: fputc(要写入的字符,fp);

文件一定要以写的方式来打开

3、fgets函数:从fp指向的文件里面读出一个字符串

格式:fgets(str,n,fp)

Str:表示存放字符串的数组

n:表示读出字符串的格式,它会读出n-1个字符,还有一个给\0

fp:文件指针

4、fputs函数:把字符串写入到fp所指向的文件中去

格式:

Fputs(str,fp);              //把str写入到fp里面去

5、专用于二进制文件操作的

A:fwrite函数:把一个结构体变量中的信息以变量的形式写入到指定文件里面去

格式:fwrite(&结构体变量名,sizeof(结构体类型),1,fp);

B:fread函数:从fp所指向文件中读出一条信息,存放在一个结构体变量中

格式:fread(&结构体变量名,sizeof(结构体类型),1,fp);

如何判断一个文件指针是否到了末尾

feof函数

格式:feof(fp);                  如果返回0没有到末尾,返回1说明到了末尾

 


如何从一个文件中把所有的字符都读出来

#include”stdio.h”
void main()
{
    FILE *fp;//还没有指向任何文件
    Char ch;
    //fp=fopen(“打开的文件名”,”打开方式”);
    fp=fopen(“c:\\chen\\my.txt”,”r”);//以读的方式来打开一个文本文件,并让指针fp指向这个文件
    while(!feof(fp))
    {                 //当文件没有读完时,就反复来读
    ch=fgetc(fp);//表示从fp指向的文件中读出一个字符
    printf(“%c”,ch);
    }
    fclose(fp);
}
 

Void main()
{
    FILE *fp;
    char ch[100];
    //fp=fopen(“c:\\chen\\you.txt”,”w”);//覆盖前面的内容。以前的都没有了
    fp=fopen(“c:\\chen\\you.txt”,”a”);//在以前内容后面添加
    Printf(“请输入一个字符串”);
    gets(ch);
    ch=’A’;//现在希望让用户来输入一些字符,然后把用户的字符写入到文件
    For(int i=0;ch[i];i++)
    {
        fputc(ch[i],fp);
    }
    fclose(fp);
}


void main()
{
    FILE *fp;
    Char str[100];
    Fp=fopen(“c”\\chen\\My.txt”,”r”);//以读的方式打开文件
    Fgets(str,5,fp);//从fp里面读取5-1个字符放在str中
    Puts(str);
    Fclose(fp);
}


void main()
{
    FILE *fp;
    char str[100]={“adjdwhdv12312”};
    fp=fopen(“c”\\chen\\My.txt”,”w”);//以写的方式打开文件
    fputs(str,fp);//
    fclose(fp);
}

 
typedef structworker
{
    Char Id[10];
    Char Name[10];
    Int Age;
}WOR;
Void main()
{ 
     FILE *fp;

WOR w[5]={

    {“w1”,”战士”,31},{“w2”,”战士”,34},{“w3”,”战士”,34},

    {“w4”,”战士”,34},{“w5”,”战士”,34}

};

    Fp=fopen(“c:\\chen\\worker.data”,”wb”);//表示打开一个二进制文件并进行写入
    For(inti=0;i<5;i++)
     {
        Fwrite(&w[i],sizeof(WOR),1,fp);       //通过fwrite文件进行写入
    }
    Fclose(fp);关闭文件
}

 

Void main

{     
    FILE *fp;

    Fp=fopen(“c:\\chen\\workker.data”,”rb”);//打开一个二进制文件进行读

    While(!feof(fp))
    {

        Fread(&w,sizeof(WOR),1,fp);

        Printf(“%s\t%s\t%s”,w.Id,w.Name,w.Age);

    }

    fclose(fp);
}

文件的定位

1、文件指针的定位

2、当文件刚刚打开的时候,文件指针会自动指向文件的开头

3、随着我们调用读写函数文件指针也会自动地向后移动

4、有时候为了编程需要,我们可能要通过程序手动地去移动文件指针

5、文件定位函数:

A、fseek函数:用来移动文件指针到文件某一个位置

格式:fseek(fp,移动的距离,参考点);

参考点:SEEK_SET从文件的开始位置、SEEK_END:从文件的末尾、SEEK_CUR:从文件的当前位置;位移量:正数表示向文件的尾部方向移动;负数表示向文件的开头方向移动。

rewind函数:把文件指针移动到开头

格式:rewind(fp);相当于fseek(fp,0,SEEK_SET);

void main()

{
    FILE *fp;
    char ch;
    fp=Fopen(“c:\\chen\\My.txt”,”r”);//以读的形式打开文件
    fseek(fp,2,SEEK_SET);//以文件开始位置为参考点,向文件尾部移动2个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fseek(fp,1,SEEK_CUR);//表示从文件当前位置为参考点向后移动一个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fseek(fp,-2,SEEK_END);//表示从文件尾部位置为参考点向前移动2个单位
    ch=fgetc(fp);//表示从文件里读出一个字符,这个函数有把指针向后移动的功能
    printf(“%c”,ch);
    fclose(fp);
}

 

总结:

函数名

功能

格式

fopen

打开一个文件

fopen(“要打开的文件名”,”打开方式”)

fclose

关闭一个文件

fclose(文件指针)

feof

判断一个文件指针是否到末尾

while(!feof(fp))

fgetc

从fp指向文件中读取一个字符ch=fgetc(fp)

ch=fgetc(fp)

fputc

从fp所指向文件中写入一个字符Ch=fputc(fp)

ch=fputc(fp)

fputs

写入一个字符串

fputs(str,fp)

fgets

读入一个字符串

fgets(str,n,fp)

fwrite

二进制文件的写(结构体)

fwrite(&结构体变量名,sizeof(结构体类型),1,fp)

fread

二进制文件的读(结构体)

fread(&结构体变量名,sizeof(结构体类型),1,fp)

fseek

文件指针定位函数

fseek(fp,位移量,参考点)

rewind

把文件指针移动到开头

Rewind(fp);相当于fseek(fp,0,SEEK_SET)

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c语言之文件学习 的相关文章

  • Adaptive AUTOSAR——Update and Configuration Management(VRTE 3.0 R21-11)

    16 1 What is Update and Configuration Management 更新和配置管理 xff08 UCM xff09 是自适应平台服务中的一个功能集群 作为一种自适应平台服务 xff0c UCM实现了自适应平台的
  • Adaptive AUTOSAR 学习笔记 - AP 背景、技术及特征

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20 11 版本 本文从AUTOSAR EXP PlatformDesign pdf开始 xff0c 一边学习 xff0c 一边顺带着翻译一下 尽力而为 x
  • gPTP时钟同步(时间同步)协议简介

    一 时间同步要解决的问题 不知道大家还记得军训练习齐步走的场景吗 xff1f 齐步走的动作要领你还记得吗 xff1f 教官首先发出 齐步 走 的命令 xff0c 大家听到 齐步 二字后 xff0c 开始调整动作 xff0c 最终所有人实现动
  • acm有用吗?

    acm有用吗 xff1f 废话 xff0c 没用的话费这么大劲干什么来了 xff0c 但是搞acm需要前期的高付出 xff0c 但是后期会有高回报 xff0c 也不是什么都不管不顾的高付出 xff0c 学好基础课的情况下高付出 中学加小学1
  • std::atomic 原子操作

    类模板 template lt class T gt struct atomic 多线程小结 xff1a 非原子操作 xff0c 不加锁 xff0c 效率很高 xff0c 但无法得到正确的结果非原子操作 xff0c 加锁 xff0c 效率很
  • Adaptive AUTOSAR——Execution Management(VRTE 3.0 R21-11)

    ChatGPT回答 xff1a Adaptive AUTOSAR Execution Management 模块是用于管理软件执行的模块 xff0c 其主要功能包括 xff1a 任务调度 xff1a 支持对任务进行调度和执行 xff0c 以
  • 【C/C++】获取当前系统时间(time_t和tm)清晰梳理

    C C 43 43 获取当前系统时间 xff08 time t和tm xff09 清晰梳理 c 43 43 time t YuXi 0520的博客 CSDN博客 C 43 43 获取系统当前时间 c 43 43 time函数 C 43 43
  • Adaptive AUTOSAR——State Management(VRTE 3.0 R21-11)

    状态管理是自适应平台服务中的一个功能集群 在自适应平台中 xff0c 状态决定了一组活动的自适应应用程序 特定于项目的应用程序 xff0c 即状态管理器 xff0c 决定何时请求状态更改 xff0c 从而更改当前活动的应用程序集 状态管理器
  • Adaptive AUTOSAR 文档官方如何阅读

    目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译 xff0c 不如直接看官方文档更全面深入 Adaptive AUTOSAR 文档官方下载地址 Adaptive Platform AUTOSAR https ww
  • Adaptive AUTOSAR-诊断管理-Diagnostic Server概述和诊断通信

    Diagnostic Server 对于AUTOSAR adaptive平台 xff0c 不用重新刷写整个ECU即可添加新的软件包 xff0c 各个软件包描述为SoftwareClusters xff0c 每个SoftwareCluster
  • Linux启动过程

    Linux 系统启动过程 菜鸟教程 Linux 系统启动过程 linux启动时我们会看到许多启动信息 Linux系统的启动过程并不是大家想象中的那么复杂 xff0c 其过程可以分为5个阶段 xff1a 内核的引导运行 init系统初始化建立
  • SOTA技术概述

    SOTA技术概述 懂车帝 懂车帝提供对于整车OTA类型 xff0c 主要分为两类 xff0c FOTA xff08 Firmware over the air xff09 和SOTA xff08 Software over t https
  • 什么是AUTOSAR?为什么汽车公司开始采用AUTOSAR来开发新产品?

    越来越多的车企开始应用ATUOSAR xff0c 也有很多公司在招聘时会在JD里注明 xff0c 应聘者需要熟练掌握AUTOSAR xff0c 那么什么是AUTOSAR xff1f 为什么从奔驰 宝马等传统豪华汽车巨头 xff0c 到新势力
  • 4.5 车载通信技术SOME/IP 白皮书

    1 SOME IP 协议概述 SOME IP xff08 Scalable service Oriented MiddlewarE over IP xff09 是指基于 IP 的可扩展的面向服务的中间件 SOME IP 协议于 2011 年
  • 计算机图形学方向和前景&&3D

    我是刚入坑计算机图形学的小菜鸟 xff0c 在百度上搜索计算机图形学方向和前景和3D xff0c 几乎不能搜到什么有用的东西 xff0c google还能搜到些有用的 xff0c 但是需要翻墙 恰好前几天山大承办的games xff0c 北
  • 在字符串中插入另一个字符串方法二

    算法分析 xff1a 把第一个字符串的前一部分和后一部分分别保存在两个字符串result和tmp中 然后再做一个拼接reslut 61 reslut 43 str2 43 tmp include lt stdio h gt include
  • linux压缩命令学习小结

    1 zip格式压缩 zip 压缩文件名 原文件名 zip命令只能压缩文件 压缩文件Ex xff1a zip file1 zip file1 解压缩 unzip file1 zip zip r 压缩文件名 源目录 加了 r就是压缩目录了 mk
  • c语言之链表学习小结

    1 链表 Typedef struct linkworker 此处Typedef 就是给结构体变量名struct linkworker取别名LINK char id 10 char name 10 struct linkworker nex
  • Linux的vim编辑器的使用方法

    Vim 没有菜单 xff0c 只有命令 vim 编辑器有三种模式 xff1a 1 命令模式 xff08 等待用户输入命令 xff09 xff0c 2 输入模式 xff08 等待用户向文本中输入内容 xff09 xff0c 3 底行模式 xf

随机推荐

  • shell中的俄罗斯方块小游戏

    俄罗斯方块的shell脚本 bin Bash Tetris Game APP declaration APP NAME 61 34 0 34 APP VERSION 61 34 1 0 34 颜色定义 cRed 61 1 cGreen 61
  • 三个方法实现求两个数的最大公约数

    复制而来 xff0c 这不是我写的 xff01 从键盘输入两个整数 xff0c 求着两个整数的最大公约数 解题思路 xff1a 从键盘输入两个数 xff0c 通过以下的三个方法实现求两个数的最大公约数 xff1a 辗转相除法 xff1a 取
  • c语言 一维字符型数组

    什么是一维字符型数组 xff1a char a 5 这个数组中含有5各元素 xff0c 每个元素都是一个字符型变量 如何定义一字符型维数组 xff1a 格式 xff1a char 数组名 长度 ex char a 6 定义了一个含有6个字符
  • c语言常用的几个函数

    strcpy函数 2 xff09 如何给字符串进行赋值 xff1a A 字符串不能直接赋值 B 目前而言 给字符串赋值的方法是通过strcpy函数 C strcpy函数需要string h的头文件的支持 D 在使用strcpy函数时不能把大
  • 两个字符型数组,a[]="abcdefgh",用户输入一个值n,把数组a中右边n个字符复制到数组t中,最后输出数组t的值。

    两个字符型数组 xff0c a 61 34 abcdefgh 34 用户输入一个值n xff0c 把数组a中右边n个字符复制到数组t中 xff0c 最后输出数组t的值 算法分析 xff1a 定义两个字符型数组 char a 61 34 ab
  • 图文详解win10/8.1/7系统cmd命令提示符出现“不是内部或外部命令,也不是可运行的程序或批处理文件”

    声明下 xff1a 本教程支持win10 win8 1 8 win7 winxp等windows桌面系统 首先我们需要打开系统的环境变量 xff0c 那么在哪里能找到环境变量呢 xff1f 当然是在系统属性里了 tips xff1a 按下w
  • 关于字符串前导*的移动/删除的几种情况

    1 编写一个程序把所有字符串的前导 保留 xff0c 其他的 号都删除 效果 xff1a shd swbd dwh 转换成 shdswbddwh 算法分析 xff0c 先研究一个字符串 char a 100 61 34 shd swbd d
  • 函数的嵌套与递归调用

    什么函数的嵌套调用 main gt fun gt fun2 gt fun3 归调用 什么函数的 求1 xff01 43 2 xff01 43 3 xff01 43 4 43 43 n 算法分析 xff1a 写一个函数求n的阶乘 要写一个函数
  • c语言学习之 变量的分类学习笔记

    A 按作用域来分类 全局变量 xff1a 不在任何一个函数里面定义的变量 局部变量 xff1a 在函数里面定义的变量 区别 xff1a 全局变量可以被一个程序中的所有函数都来使用 局部变量只能在定义它的本函数中来使用 所有的函数都共享全局变
  • 以数组作为函数的参数c学习笔记

    以数组作为函数的参数 格式 xff1a 类型标识符 函数名 类型标识符 数组名 int n 处理的代码 A n表示数组的长度 B 在以数组作为函数参数时 xff0c 数组一般不写大小 C 它的大小由变量n来决定 sum int a int
  • c语言之指针之谜

    变量地址的意义 指针的定义 指针的赋初值 通过指针改变变量的值 内存 xff1a xff08 锅 xff09 A 在计算机中有一个很大的处理场 B 程序都是在内存中运行的 C 总结 xff1a 数据的处理场地 外存 xff1a xff08
  • 指向二维数组的指针学习笔记

    二维数组与一维数组的关系 二维数组的指针指向一维数组的指针 一维数组的情况下 xff1a 数组名代表数组首地址 a 43 i 61 a i 二维数组与指针 int a 3 4 61 1 2 3 4 5 6 7 8 9 10 11 12 a
  • 指向一维数组的指针学习笔记

    main int a 61 2 4 6 8 10 y 61 1 x p p 61 amp a 1 for x 61 0 x lt 3 x 43 43 y 43 61 p 43 x 1 43 4 43 6 43 8 printf 34 y 6
  • 生日快乐音乐小程序

    include 34 iostream 34 include 34 time h 34 include lt windows h gt include lt stdio h gt include lt conio h gt using na
  • c语言之指向字符串的指针学习笔记

    一 指向字符串的指针 1 xff1a 什么是字符串 xff1f 用双引号括起来的0个或多个字符 34 123 34 2 xff1a 字符串的结束符号 39 0 39 39 0 39 它是一个字符 xff0c 不是一个字符串 3 xff1a
  • 指向函数的指针与指针数组学习笔记

    指向函数的指针 1 char p 指向字符串的指针 2 int p 指向整型变量的指针 3 int a 4 61 1 2 3 4 p 61 a 指向一维数组的指针 4 int a 3 4 61 p 4 61 a 指向二维数组的指针 5 指针
  • makefile

    目录 一 Makefile简介 1 make解决的问题 xff1a 1 大量代码的关系维护 2 减少重复编译时间 二 Makefile文件命名规则 三 Makefile语法规则 1 Makefile基本规则三要素 xff1a 1 xff09
  • c语言之宏学习笔记

    宏 宏 什么是宏 xff1f 1 用一个字符串表示有意义的常量或常量表达式被称为宏 2 使用宏可以增加程序的灵活性 3 宏为了区分变量一般用大写字母 xff0c 也可以用小写字母 4 宏不是语句 xff0c 所以在定义宏的时候不要加分号 x
  • 一道有趣的数学题

    爱因斯坦曾出过这样一道有趣的数学题 xff1a 有一个长阶梯 xff0c 若每步上2 阶 xff0c 最后剩1阶 xff1b 若每步上3阶 xff0c 最后剩2阶 xff1b 若每步上5阶 xff0c 最后剩4阶 xff1b 若每步上6阶
  • c语言之文件学习

    文件是相关信息的集合 文字信息 声音信息 图形信息 文件的取名 xff1a 主文件名 扩展名 文件的分类 xff1a xff08 c 程序中 xff09 A xff1a 文本文件 B xff1a 二进制文件 xff08 data xff09