C语言文件操作(2)

本文是C语言文件操作系列的第二篇,重点介绍了文件的随机读写(fseek, ftell, rewind),文本文件和二进制文件的区别,以及如何正确判断文件读取结束。同时,还探讨了文件缓冲区的影响。" 114144344,10539784,Unity3D Java AI寻路实现,"['游戏开发', 'AI算法', 'Unity3D框架', 'Java编程', '路径规划']
摘要由CSDN通过智能技术生成

传送门

C语言文件操作(1)


目录

前言

一、文件的随机读写

1.fseek

2.ftell

3.rewind

二、文本文件和二进制文件

三、文件读取结束的判定

1.被错误使用的feof

四、文件缓冲区

总结


前言

  我们来紧接上一篇文章,继续讲解有关c语言文件操作的内容,昨天讲了文件的顺序读写,今天我们来介绍文件的随机读写,文本文件和二进制文件等内容,下面我们就开始吧~


一、文件的随机读写

1.fseek

int fseek ( FILE * stream, long offset, int origin );
//根据文件指针的位置和偏移量来定位文件指针。
  • offset为偏移量
  • origin有三种,分别为:
  1. SEEK_CUR - 文件指针当前的位置
  2. SEEK_END - 文件末尾的位置
  3. SEEK_SET - 文件开始的位置

下面我们来举几个例子,我们已知文件中放的是"abcdef",SEEK_CUR

#include <stdio.h>

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	int ch = fgetc(pf);//a
	printf("%c\n", ch);
	ch = fgetc(pf);//b
	printf("%c\n", ch);

	fseek(pf, 2, SEEK_CUR);//从当前位置向后偏移两位
	ch = fgetc(pf);//e
	printf("%c\n", ch);

	fclose(pf);
	pf = NULL;
	return 0;
}

SEEK_END:(偏移量必须为负数)

#include <stdio.h>

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	fseek(pf, -1, SEEK_END);//从文件末尾向前偏移一位
	int ch = fgetc(pf);//f
	printf("%c\n", ch);

	fclose(pf);
	pf = NULL;
	return 0;
}

SEEK_SET:(偏移量必须为正数)

#include <stdio.h>

int main()
{
	FILE* pf = fopen("test.txt", "r");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}

	fseek(pf, 2, SEEK_SET);//从文件开始的位置向后偏移两位
	int ch = fgetc(pf);//c
	printf("%c\n", ch);

	fclose(pf);
	pf = NULL;
	return 0;
}

2.ftell

long int ftell ( FILE * stream );
//返回文件指针相对于起始位置的偏移量

我们来举个例子:

#include <stdio.h>

int main()
{
	FILE* pf = fopen
  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值