文章目录

  • 文件函数(文本文件)
    • 文件的读
      • fgetc(读一个字符)
      • fgets(读一行字符串)
      • fread(读指定字节数的字符串)
    • 文件的写
      • fputc(写入一个字符)
      • fputs(写入一个字符串)
      • fwrite(指定字节数写入)
    • 文件的定位
      • rewind(fp)
      • ftell(fp)
      • fseek

文件函数(文本文件)

文件的读

fgetc(读一个字符)

// 函数原型
int fgetc(
FILE *stream     //指向文件结构的指针
);
  1. fgetc 返回作为 int 读取的字符,或返回 EOF 以指示错误或文件尾。
  2. 这个函数读取完会将文件指针移动到下一个字符。
while(EOF != (ch = fgetc(fp))){     //可读取文件全部字符printf("%c",ch);            //若输出出现乱码,可调整文件编码为ANSI}

fgets(读一行字符串)

// 函数原型
char *fgets(char *str,           //数据的存储位置。int numChars,        //要读取的最大字符数。      FILE *stream         //指向 FILE 结构的指针
);
  1. 函数被调用时,最多读取n-1个字符,并将读入的字符串存入指针str所指向内存地址开始的n-1个连续的内存单元中。

  2. 当函数读取到字符串达到指定的个数、或接收到换行符、或接收到文件结束标志EOF时,将读取的字符后面自动添加’\0’字符,若有换行符,则将换行符保留(换行符在’\0’字符之前)。若有EOF,则不保留EOF。

  3. 执行成功,函数会将读到的字符串自动返回 str。执行失败,则返回 NULL 指示错误或文件尾条件。

  4. 函数读取完会将文件指针移动到字符串的下一个字符。

char str[100];
while(fgets(str,100,fp) != NULL){     //可读取文件全部内容printf("%s",str);}

fread(读指定字节数的字符串)

//函数原型
size_t fread(void *buffer,    //数据的存储位置。size_t size,     //项目大小(以字节为单位),即每次读多少个字节。size_t count,    //要读取的项目的最大数量,即读多少次。FILE *stream     //指向 FILE 结构的指针。
);

fread 返回实际读取的完整项数,在达到 buffer * size 前如果发生错误或遇到文结件尾,该数字可能小于 buffer * size,若读完则返回0。

// 读取文件全部内容。
char str[100] = {0};
while(fread(str,1,99,fp)){printf("%s",str);
}

文件的写

以w、w+打开文件时,文件会清空。

fputc(写入一个字符)

//函数原型
int fputc(int c,               //要写入的字符。FILE *stream         //指向文件结构的指针。
);

函数会返回写入的字符。fputc,返回值 EOF 表示错误。

fputs(写入一个字符串)

//函数原型
int fputs(const char *str,         //输出字符串。FILE *stream             //指向 FILE 结构的指针。
);

如果成功,函数将返回一个非负值。发生错误时,fputs将返回EOF。

char*str = "abcdefghijklmnopqrstuvwxyz";
fputs(str,fp);

fwrite(指定字节数写入)

//函数原型
size_t fwrite(const void *buffer,      //指向要写入的数据的指针。size_t size,size_t count,FILE *stream
);

fread 返回实际写入的完整项数,在达到 buffer * size 前如果发生错误或遇到文结件尾,该数字可能小于 buffer * size。

//写入数字
int num = 12345;
fwrite(&num,1,sizeof(num),fp);
//写入结构体
struct student{int num;char name[];int grade;
};
struct student a = {1,"xjh",100};
fwrite(&a,1,sizeof(a),fp);

文件的定位

rewind(fp)

将文件指针重置到文件的开头

ftell(fp)

返回当前位置

fseek

//函数原型
int fseek(FILE *stream,     //指向 FILE 结构的指针。long offset,      //从origin开始,往后的字节数。int origin        //初始位置。
);

如果成功,则 fseek 返回 0。 否则,返回一个非零值。

origin的值只能为

原始值 含义
SEEK_CUR 文件指针的当前位置。
SEEK_END 文件结尾。
SEEK_SET 文件开头。
fseek(fp,-10,SEEK_CUR);    //将指针定位到当前位置向前10个字节的位置
fseek(fp,5,SEEK_SET);      //将指针定位到文件开头向后5个字节的位置
fseek(fp,-10,SEEK_END);    //将指针定位到文件末尾向前10个字节的位置
// 实现输出最后一行
#include<stdio.h>
#include<stdlib.h>int main(){FILE*fp = fopen("C:\\Users\\1\\OneDrive\\桌面\\z.txt","r+");if(fp == NULL){printf("打开文件失败.\n");} int Length = -1;char Find;fseek(fp,Length,SEEK_END);while(fread(&Find,1,1,fp)){if(Find == '\n'){break;}Length--;fseek(fp,Length,SEEK_END);}jiLu++;fseek(fp,jiLu,SEEK_END);char str[100] = {0};fgets(str,99,fp);printf("%s",str);fclose(fp);system("pause");return 0;
}

C语言常用文件读、写、定位函数相关推荐

  1. 实验九:采用异步方式实现文件读/写

    一:实验目的 (1)了解Windows系统异步文件读/写的概念. (2)熟悉Windows系统文件读/写相关的API. (3)掌握采用异步方式实现文件读/写的相关参数设置. 二:实验准备知识:文件异步 ...

  2. 实验九 使用异步方式实现文件读\写

    实验九 使用异步方式实现文件读\写 一.实验目的 了解Windows系统异步文件读/写的概念. 熟悉Windows系统文件读/写相关的API. 掌握采用异步方式实现文件读/写的相关参数设置. 二.实验 ...

  3. c语言英文字符转数字,C语言常用数字和字符串转换函数(国外英文资料).doc

    C语言常用数字和字符串转换函数(国外英文资料) C语言常用数字和字符串转换函数(国外英文资料) C language commonly used Numbers and string conversi ...

  4. ABAP语言常用的系统字段及函数

    ABAP语言常用的系统字段及函数 常用的系统变量如下: 1.SY-PAGNO当前页号 2.SY-DATUM当前时间 3.SY-LINSZ当前报表宽度 4.SY-LINCT当前报表长度 5.SPACE空 ...

  5. 如何写一个C语言头文件,C语言头文件如何写?.doc

    C语言头文件如何写? 沃直植跑决争肾垮忧地留许腐榔锑舱黎徒礁锄税絮窟柑冀宴稼误萎蛛席脏衙鹏丢寇急院馋猎争城丫轨最懦患队巩并道嫉缘拉诵旭倘荫惭岩靛约瞥剑澳摈讶蕾沈蜜荧次侧抿两洛加悠馈射移淳敏凹肮复钡桑缮 ...

  6. SPI Flash 读/写/擦除函数(适用于1MB Flash)

    SPI Flash 读/写/擦除函数(适用于1MB Flash) 一.GD25Q80B 介绍 二.相关宏定义 三.读取FLASH设备的厂商和设备标识 四.擦除FLASH设备扇区/块 五.FLASH 设 ...

  7. [译]Go语言常用文件操作汇总

    Go官方提供的文件操作标准库分散在os.ioutil等多个包中,里面有非常多的方法涵盖了文件操作的所有场景,不过因为我平时开发过程中需要直接操作文件的场景其实并不多,在加上Go标准库的文档太难搜索,每 ...

  8. IBM SPSS的Sav文件读/写

    本文只要介绍通过IBM提供的库读/写sav文件格式. 在github上有.net版本和python版本,本文主要介绍用C读写sav文件. 参考文档:Input-Output Module.pdf,该文 ...

  9. 【C 语言】文件操作 ( 写文本文件 | Qt 创建 C 语言命令行项目 )

    文章目录 一.创建 Qt 纯 C 语言项目 二.文件写文本操作 三.命令行输入字符串并保存 一.创建 Qt 纯 C 语言项目 打开 Qt 工具 , 选择 " 菜单栏 / 文件 / 新建文件或 ...

最新文章

  1. HTC Element Behaviors in Internet Explorer.
  2. 使用openpyxl去操作Excel表格
  3. MySQL 5.1.24rc + innodb plugin尝鲜
  4. 卸载linux 上Java的正确方式
  5. step3 . day2 数据结构之线性表链表
  6. understanding shader mat4 * vec4 calculation​
  7. liferay 学习网站 作者为 胡启稳
  8. P1446-[HNOI2008]Cards【Burnside引理,dp】
  9. Qt工作笔记-各种构造函数汇总以及运算符重载(入门必备)
  10. 知识图谱入门2-1:实践——基于医疗知识图谱的问答系统
  11. 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】
  12. oracle如何查不满16岁,如何在Oracle数据库中使用SQL查询获取基于年龄组的人数?...
  13. 人脸检测FDDB评测的详细步骤
  14. Multitask Learning
  15. 超好用的文件对比工具—— Beyond Compare
  16. 51单片机之共阳极静态数码管
  17. 华硕路由域名访问_“618” WiFi6 路由器选购推荐清单_路由器
  18. 【对讲机的那点事】玩对讲机,你必须要了解的技术指标(下)
  19. 虚幻引擎4中的自定义深度
  20. 如何下载知网上的论文?

热门文章

  1. PHP开发仿推特Twitter社区网络源码+修复BUG
  2. 使用OpenFiler实现共享存储
  3. 央视315曝光软件捆绑问题:必须打击违规软件下载网站
  4. latex的图的排列方法_latex 图片并排、竖排
  5. Jupyter Notebook简介、安装及使用教程
  6. 【运维技术面试】容器的交付流程是什么?
  7. 脑电信号在情感计算中应用
  8. 2019计算机科学导论作业,北语--19春《计算机科学导论》作业-1234(13页)-原创力文档...
  9. 基于6自由度飞行器的EKF和INS融合算法的MATLAB仿真
  10. 7 款可替代 top 命令的工具