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

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

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

相关文章
|
7月前
|
存储 C++
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
|
6月前
|
Serverless 开发者 Python
Python函数式编程:让你的代码更简洁、更高效!
【6月更文挑战第12天】Python函数式编程引入了数学函数概念,强调无副作用和不可变数据。特点包括高阶函数、Lambda表达式、map、filter和reduce。示例展示了如何使用map进行平方运算,filter筛选条件元素,reduce计算元素总和,体现其简洁高效。虽然不适用于所有情况,但函数式编程能提升代码可读性和可维护性。
32 3
|
7月前
|
C++
C++语言学习文件操作应用案例
C++文件操作示例:创建`ofstream`对象写入&quot;Hello, World!&quot;到`output.txt`,刷新缓冲区,然后使用`ifstream`读取并打印文件内容。如果文件打开失败,程序将显示错误信息并返回1。
36 3
|
7月前
|
编译器 Linux C语言
C语言:预处理详解(知识点和代码演示)
C语言:预处理详解(知识点和代码演示)
|
7月前
|
机器学习/深度学习 人工智能 数据挖掘
Python语言的基本内容
Python语言的基本内容
|
索引 Python
Python的知识点运用-3(不太基础的基础运用,代码美化)
Python的知识点运用-3(不太基础的基础运用,代码美化)
62 0
|
7月前
|
设计模式 算法 程序员
代码之禅:从功能实现到艺术境界
【2月更文挑战第19天】 在编程世界里,每一行代码不仅仅是冷冰冰的字符组合,它们背后承载着程序员的智慧和创造力。本文将深入探讨如何将日常的编程工作提升至一种艺术境界,让代码不仅实现功能需求,还能反映出编写者的哲学思考和技术审美。我们将通过一系列实践策略和思维模式,探索如何编织出既高效又优雅的代码,使之成为技术与艺术完美结合的产物。
|
7月前
|
Python
【Python指南 | 第八篇】自定义函数、输入输出,这一篇就够了
【Python指南 | 第八篇】自定义函数、输入输出,这一篇就够了
156 0
|
存储 C语言
c语言程序的框架以及内容
c语言程序的框架以及内容
236 0
|
缓存 安全 程序员
如何写一个更好的Python函数?
如何写一个更好的Python函数?
147 5
下一篇
无影云桌面