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

在这里插入图片描述


目录

    • 补充
      • 1.sprintf
      • 2.sscanf
  • 五、文件的随机读写
    • 1.fseek函数
    • 2.ftell函数
    • 3.rewind函数
  • 六、文本文件和二进制文件
    • 1.文本文件
    • 2.二进制文件
    • 3.查看二进制文件方式:
  • 七、文件读取结束的判定
  • 八、文件缓冲区

补充

1.sprintf

功能:把一个格式化数据(不是数据流)转化成字符串

#define _CRT_SECURE_NO_WARNINGS 1
#include
struct S
{
	int a;
	float b;
};
int main()
{
	
	struct S s = { 1,2.22f };
	char a[20] = { 0 };
	sprintf(a, "%d %f", s.a, s.b);
	//sscsanf(s, "%d %f", &(s.a), &(s.b));
	//printf("%d %f", s.a, s.b);
	printf("%s", a);
	return 0;
}

在这里插入图片描述

2.sscanf

从字符串中读取格式化的数据

#define _CRT_SECURE_NO_WARNINGS 1
#include
struct S
{
	int a;
	float b;
};
int main()
{
	
	struct S s = { 3,4.444};
	char a[20] = { 0 };
	struct S tmp = { 0 };
	sprintf(a, "%d %f", s.a, s.b);
	sscanf(a, "%d %f", &(tmp.a),&(tmp.b));
	printf("%d %f", s.a, s.b);
	//printf("%s", a);
	return 0;
}

将字符数组a中的数据转化成结构体。
在这里插入图片描述

五、文件的随机读写

1.fseek函数

int fseek ( FILE * stream, long int offset, int origin );

功能:根据文件指针的位置和偏移量来定位文件指针
默认是从文件第一个位置开始。

2.ftell函数

long int ftell ( FILE * stream );

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

3.rewind函数

void rewind ( FILE * stream );

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

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

1.文本文件

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文 本文件。

2.二进制文件

数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是二进制文件。

3.查看二进制文件方式:

1.先添加文件到源文件
在这里插入图片描述
2.右击打开方式
在这里插入图片描述
3.选择二进制编辑器
在这里插入图片描述
在这里插入图片描述
由于vs2019是小端存储,所以结果为10 27 00 00 .

七、文件读取结束的判定

在文件读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。
feof函数应用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。

  1. 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets ) 例如: fgetc 判断是否为 EOF . fgets 判断返回值是否为 NULL .>
  2. 二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。 例如: fread 判断返回值 是否小于实际要读的个数 。

八、文件缓冲区

  • ANSIC 标准采用 “ 缓冲文件系统 ” 处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序中每一个正在使用的文件开辟一块 文件缓冲区

  • 从内存向磁盘输出数据会先送到内存中的缓冲区, 装满
    缓冲区后才一起送到磁盘上。如果从磁盘向计算机读入数据,则从磁盘文件中读取数据输入到内存缓冲区( 充满缓冲区),然后再从缓冲区逐个地将数据送到程序数据区(程序变量等)。

  • 缓冲区的大小根据C 编译系统决定的。

在这里插入图片描述
各位看官老爷,咱下回再见!
别忘了点赞关注加评论哟
❤️ ✨ ⭐️

你可能感兴趣的:(C语言进阶,c语言,开发语言)