【C语言】文件操作(下)

这篇具有很好参考价值的文章主要介绍了【C语言】文件操作(下)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

标题的顺序是接着之前写的,希望这篇博客对你有帮助


七. 随机读写函数

实际上,无论是读还是写,在一次调用顺序读写函数,文件指针会移到已经读过或者写过的下一个位置,从那个位置开始下一次读和写(在文件没有关闭的前提下,如果关闭了,文件指针会回到最开始的地方进行读写)

1. fseek

根据文件指针的位置和偏移量来定位文件指针

跳转网站

fseek - C++ Reference

【C语言】文件操作(下),c语言

注意事项:

  1. int fseek ( FILE * stream, long int offset, int origin )

返回类型 :int

     2. 参数 : stream , offset , origin

stream 是流的指针(适用于文件

offset 是距离 orgin 位置的偏移量(正数是向右偏移几格,负数是向左偏移几格)

origin 只有三种:

SEEK_SET : 文件指针回到起始位置

SEEK_CUR : 文件指针处于现在位置不动

SEEK_END : 文件指针回到文章的结尾位置

参数类型是 FILE * , long int , int

    3. 引用头文件

<stdio.h>


举例

文件的内容:

【C语言】文件操作(下),c语言

#include<stdio.h>
int main()
{
  FILE* pa = fopen("data.txt", "r");
  printf("%c", fgetc(pa));
  printf("%c", fgetc(pa));
  fseek(pa, -1, SEEK_CUR);
  printf("%c", fgetc(pa));
  fseek(pa, 3, SEEK_SET);
  printf("%c", fgetc(pa));
  fseek(pa, -1, SEEK_END);
  printf("%c", fgetc(pa));
  fclose(pa);
  pa = NULL;
 return 0;
}

运行结果:

【C语言】文件操作(下),c语言

画图分析:

第一次读取数据:

【C语言】文件操作(下),c语言

第二次读取数据:

【C语言】文件操作(下),c语言

第三次读取数据:

【C语言】文件操作(下),c语言

第四次读取数据:

【C语言】文件操作(下),c语言

第五次读取数据:

【C语言】文件操作(下),c语言

2. ftell

返回文件指针相对于起始位置的偏移量

跳转网站

ftell - C++ Reference

【C语言】文件操作(下),c语言

注意事项:

  1. long int ftell ( FILE * stream )

返回类型 :lonf int(返回的是偏移量)

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

     3. 引用头文件

<stdio.h>


举例

#include<stdio.h>
int main()
{
	char ch[] = "ss";
	FILE* pa = fopen("data.txt", "r");
	fseek(pa, -1, SEEK_END);
	int tmp = ftell(pa);
	printf("%d ", tmp);
	fclose(pa);
	pa = NULL;
	return 0;
}

运行结果:

【C语言】文件操作(下),c语言

画图分析:

【C语言】文件操作(下),c语言

3. rewind

让文件指针的位置回到文件的起始位置

跳转网站

rewind - C++ Reference

【C语言】文件操作(下),c语言

注意事项:

  1. void rewind ( FILE * stream )

返回类型 :void

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

   3. 引用头文件

<stdio.h>


举例

#include<stdio.h>
int main()
{
	char ch[] = "ss";
	FILE* pa = fopen("data.txt", "r");
	fseek(pa, -1, SEEK_END);
	rewind(pa);
	printf("%c ", getc(pa));
	fclose(pa);
	pa = NULL;
	return 0;
}

运行结果:

【C语言】文件操作(下),c语言

八. 文件读取结束的判定

文件读取结束有两者情况:

  • 正常的读到文件末尾而结束
  • 因为发生读取错误导致文件读取结束

判定导致文件读取结束原因的函数

1 . feof

当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束

跳转网站

feof - C++ Reference

【C语言】文件操作(下),c语言

注意事项:

  1. int feof ( FILE * stream )

返回类型 :int

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

    3. 引用头文件

 <stdio.h>

2 . ferror

当文件读取结束的时候,判断是读取结束的原因是否是:遇到文件尾结束

跳转网站

ferror - C++ Reference

【C语言】文件操作(下),c语言

注意事项:

  1. int ferror ( FILE * stream )

返回类型 :int

     2. 参数 stream

stream 是流的指针(适用于文件

参数类型是 FILE *

    3. 引用头文件

<stdio.h>


feof 和 ferror 举例

#include<stdio.h>
int main()
{
	char ch[] = "ss";
	FILE* pa = fopen("data.txt", "r");
	while (getc(pa) != EOF)
	{
		;
	}
	if (ferror(pa))
	{
		printf("文件读取过程发生失败\n");
	}
	else if (feof(pa))
	{
		printf("文件正常遇到结尾\n");
	}
	fclose(pa);
	pa = NULL;
	return 0;
}

运行结果:

【C语言】文件操作(下),c语言

九. 文件缓冲区

缓冲文件系统 :

是指系统自动地在内存中为 程序中每一个正在使用的文件开辟一块“文件缓冲区”。从内存向磁盘输出数据会先送到内存中的缓冲区,装满缓冲区后才⼀起送到磁盘上。缓冲区的大小根据C编译系统决定的。

所以我们往文件里面写入数据时,立刻打开文件,不能确保一定能找当刚才的数据(如果想要获得数据,可以先刷新缓冲区)文章来源地址https://www.toymoban.com/news/detail-789631.html

到了这里,关于【C语言】文件操作(下)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——文件操作(1)

    本章重点 1. 为什么使用文件 2. 什么是文件 3. 文件的打开和关闭 4. 文件的顺序读写 5. 文件的随机读写 6. 文本文件和二进制文件 7. 文件读取结束的判定 8. 文件缓冲区 1.为什么使用文件 我们前面学习结构体时,写了通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增

    2023年04月09日
    浏览(22)
  • 【C语言】文件操作

    目录 前言: 一、为什么使用文件 二、什么是文件 (一)程序文件 (二)数据文件 (三)文件名 三、文件的打开和关闭 (一)文件指针 (二)文件的打开和关闭 四、文件的顺序读写 (一)对比一组函数 五、文件的随机读写 (一)fseek (二)ftell (三)rewind 六、文本文

    2024年02月16日
    浏览(30)
  • C语言【文件操作】

    1、输入/输出流的定义。 ​C语言中,文件输入/输出以流的方式进行。 ​读还是写,输入还是输出,是站在内存(程序)的角度来看的。从程序(内存)向 数据源(如文件、网络等)传递数据的过程叫做 读 数据,读数据使用的路径叫做 输入流 ,一般读数据的过程是一个 解

    2024年02月05日
    浏览(37)
  • 【C语言】文件操作 -- 详解

    磁盘上的文件是文件。 1、为什么要使用文件         举个例子,当我们想实现一个 “通讯录” 程序时,在通讯录中新建联系人、删除联系人等一系列操作,此时的数据存储于内存中,程序退出后所有数据都会随之消失。为了让通讯录中的信息得以保存,也就是想让 数据

    2024年02月11日
    浏览(36)
  • 详解C语言—文件操作

    目录 1. 为什么使用文件 2. 什么是文件 3. 文件的使用 文件指针 文件的打开和关闭 三个标准的输入/输出流:  4. 文件的顺序读写 对字符操作:  fputc:  fgetc:   练习复制整个文件: 对字符串操作: fputs:  fgets: fprintf:  fscanf: 辨析sprintfsscanf: 对二进制操作:  fwrit

    2024年02月07日
    浏览(37)
  • 【C语言】文件操作详解

    hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注🥰🥰收藏🌹🌹🌹 💥 个人主页:大耳朵土土垚的博客 💥 所属专栏:C语言学习笔记 💥对于C语言学习疑问的都可以在上面的专栏进行学习哦~ 有问题可以写在评论区或者私信我哦~ 如果没有⽂件,我们写的

    2024年03月12日
    浏览(42)
  • (C语言)文件操作-----详解

    目录 1. 为什么使用文件 2. 什么是文件 程序文件 数据文件  文件名  3. 文件的打开和关闭 文件指针  文件的打开和关闭 🙉🙉打开文件(fopen函数)  🙈🙈关闭文件(fclose函数)  补充 : 相对路径 绝对路径 4. 文件的顺序读写  顺序读写函数  字符输入函数 —— fputc函数

    2023年04月15日
    浏览(48)
  • <C语言> 文件操作

    缓冲文件系统中,关键的概念是“ 文件类型指针 ”,简称“ 文件指针 ”。 每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名 字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有

    2024年02月14日
    浏览(28)
  • 【C语言】文件操作(下)

    标题的顺序是接着之前写的,希望这篇博客对你有帮助 实际上,无论是读还是写,在一次调用顺序读写函数,文件指针会移到已经读过或者写过的下一个位置,从那个位置开始下一次读和写 (在文件没有关闭的前提下,如果关闭了,文件指针会回到最开始的地方进行读写)

    2024年02月01日
    浏览(27)
  • 【C语言:文件操作】

    在之前的学习中,我们把数据的输入和输出都是以终端为对象的,即从终端的键盘输入数据,运行结果输出到终端显示器上的。 实际上,有一些数据是需要保存起来的,这里就要使用到文件了。 所谓文件,一般指存储在外部介质上(硬盘…)数据的集合。 文件有不同的类型

    2024年02月04日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包