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

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

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

相关文章
|
8月前
|
存储 C++
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
【C++】可变参数模板使用总结(简洁易懂,详细,含代码演示)
|
3月前
|
JavaScript 前端开发
新手小白如何使用!!运算符写出更简洁直观的代码?
【10月更文挑战第10天】新手小白如何使用!!运算符写出更简洁直观的代码?
22 0
|
8月前
|
存储 开发者 Python
Python函数的基本使用及其重要性
Python函数的基本使用及其重要性
50 0
|
8月前
|
C++
C++语言学习文件操作应用案例
C++文件操作示例:创建`ofstream`对象写入&quot;Hello, World!&quot;到`output.txt`,刷新缓冲区,然后使用`ifstream`读取并打印文件内容。如果文件打开失败,程序将显示错误信息并返回1。
51 3
|
8月前
练习所学文件操作的相关函数
上上篇文章,我们介绍了文件和文件操作函数,现在我们来练习一下所学文件操作的相关函数吧! 实践出真知~
43 0
|
8月前
|
编译器 Linux C语言
C语言:预处理详解(知识点和代码演示)
C语言:预处理详解(知识点和代码演示)
|
8月前
|
机器学习/深度学习 算法 索引
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
Python函数、类和对象、流程控制语句if-else while的讲解及演示(图文解释 附源码)
75 0
|
程序员 C语言 Python
|
缓存 安全 程序员
如何写一个更好的Python函数?
如何写一个更好的Python函数?
157 5