文件操作函数——大全(简洁,全面,附代码演示)

简介: 文件操作函数——大全(简洁,全面,附代码演示)

1.各种文件操作函数/文件使用方式总览

image.png

image.png

2.scanf printf和文件操作函数的区别

PS:可以将键盘和屏幕理解成接收的文件

image.png

3.fgetc fputc(字符)

image.png

fgetc特性:

  1. fgetc读取一次后,指针会跳着走,自动到下一个
  2. fgetc读到的不是Ascall码值,会返回EOF
  3. image.png
  4. image.png

例:统计给定文本文件名为filename中所有大小写英文字符的个数并返回(运用fgetc,附代码)

统计给定文本文件名为filename中所有大小写英文字符的个数并返回
long fileLengthOf(char filename[])
{
  char ch;
  long num=0;
  FILE*fp=fopen(filename,"r");
  if(fp==NULL)
  {
  return -1;
  }
  while(!feof(fp))//这里默认文件夹不为空,相关知识点见我主页feof博客
  {
   ch=fgetc(fp);
   if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')
    {
     num++;
    }
  }
fclose(fp);
fp=NULL;
return num;
}

4.fgets fputs(行)

写入:image.png

读取:image.png

fputs特性:

  •  写文件时会一行一行写,并且自动换行(手动加\n)

fgets特性:

  •  读的时候会放到一个字符数组里,再通过字符数组打印
  •  读取的数据默认带\0,也就是默认少一位

image.png

  • 读取的数据,当一行结束仍然不够数,则不会再读下一行(解决方法:再读取一次
  • image.png
  • 5.fprintf fscanf (格式化)    

特点:


fscanf用于读取字符串数据流时,遇到空白字符(空格' '; 制表符'\t'; 新行符'\n')就停止,若要读取完整的一行数据,可以使用格式控制("%[^\n]%*c")。

(与其他文件函数对比)写入时目标指针fp放前面

1.对比fprintf和printf格式:


image.png

image.png

image.png

2.对比fprintf与fscanf格式:

image.png

例:从已知格式的ASCLL文件filename中顺序读取id和name,返回读取信息的条数(运用fscanf,附代码)

从已知格式的ASCLL文件filename中顺序读取id和name,返回读取信息的条数
int funFile0(char*filename,int id[],char name[][32])
{
  int i,num;
  FILE *fp=fopen(filename,"r");
//FILE *fp=fopen(filename,"w");写入
  if(fp==NULL)
    return -1;
  else
  {
   fscanf(fp,"%d",&num);//当写时,此段删除
   for(i=0;i<num;i++)
    {
     fscanf(fp,"%d%s",id+i,name[i]);
    //fprint(fp,"%d%s",id[i],name[i]);写入
    }
  }
   fclose(fp);
   fp=NULL;
   return num;
}

6.fread fwrite(二进制)

image.png

image.png

7.sscanf sprintf(字符串)

实例:利用sscanf和sprintf进行结构体成员与字符串的转换

image.png

scanf/fscanf/sscanf与printf/fprintf/sprintf的对比:

image.png

8.fseek(调节文件指针位置,3种)

fseek函数作用:调节文件指针位置

int origin的位置可以设置三种:

  • SEEK_SET:文件开头
  • SEEK_CUR:文件指针现在的位置
  • SEEK_END:文件结尾

image.png

例子:    目的:读取到d          方法:从头向后偏移+3/从尾向头偏移-3

image.png

image.png

9.ftell(返回位移值)

image.png

image.png

10.rewind(返回起始位置)

image.png

image.png

相关文章
|
1月前
|
前端开发 NoSQL Java
代码拉取与运行
JeecgBoot前后端分离快速开发框架,支持在线拉取源码(后端SpringBoot + 前端Vue3),导入数据库脚本,配置application-dev.yml中数据库与Redis信息,Idea导入项目后启动后端应用,前端通过Visual Studio Code启动,访问Swagger接口文档及前端页面,实现高效开发部署。
|
SQL 关系型数据库 MySQL
MySQL删除表数据、清空表命令(truncate、drop、delete 区别)
MySQL删除表数据、清空表命令(truncate、drop、delete区别) 使用原则总结如下: 当你不需要该表时(删除数据和结构),用drop; 当你仍要保留该表、仅删除所有数据表内容时,用truncate; 当你要删除部分记录、且希望能回滚的话,用delete;
|
机器学习/深度学习 计算机视觉
YOLOv5改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数
YOLOv5改进 | 2023 | InnerIoU、InnerSIoU、InnerWIoU、FocusIoU等损失函数
724 0
|
应用服务中间件
JavaWeb项目img标签的图片无法加载的原因及解决方法
JavaWeb项目img标签的图片无法加载的原因及解决方法
1384 0
JavaWeb项目img标签的图片无法加载的原因及解决方法
|
监控 Kubernetes 安全
如何设置一个有效的远程管理工具来简化服务器的维护工作?
如何设置一个有效的远程管理工具来简化服务器的维护工作?
|
存储 Java 程序员
Python基础语法第七章之文件
一个机器上, 会存在很多文件, 为了让这些文件更方面的被组织, 往往会使用很多的 "文件夹"(也叫做目录)来整理文件,实际一个文件往往是放在一系列的目录结构之中的,为了方便确定一个文件所在的位置, 使用 文件路径 来进行描述。描述一个文件的位置, 使用 绝对路径 和 相对路径 都是可以的. 对于新手来说, 使用 绝对路径 更简单更好理解, 也不容易出错.. 相对路径需要先指定一个基准目录, 然后以基准目录为参照点, 间接的找到目标文件. 咱们课堂上暂时不详细介绍.使用 close 方法关闭已经打开的文件.
190 0
|
JSON NoSQL MongoDB
mongodb 命令行连接及基础命令
mongodb 命令行连接及基础命令
PPT 稳妥选用字体
PPT 稳妥选用字体
78 0
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的医院核酸检测服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的医院核酸检测服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
153 0
|
存储 5G API
来了,永久免费的图床服务
Markdown爱好者推荐PicGo软件搭配免费图床服务SMMS,解决在Markdown中插入图片的困扰。PicGo支持多种图床,如腾讯云、阿里云和免费的SMMS,提供拖拽上传、压缩图片功能。通过VSCode或Typora配合PicGo插件,能实现图片自动上传并转换为Markdown格式。SMMS提供5GB免费存储,足够个人博客使用。