Bootstrap

(C语言)fread与fwrite详解

目录

1.fwrite函数详解

2 fread函数详解


1. fwrite函数详解

头文件:stdio.h

函数有4个参数,只适用于文件输出流

作用;将从ptr中拿count个大小为size字节的数据以二进制的方式写到文件流中。返回写入成功的数目。

演示

#include <stdio.h>
int main()
{
	FILE* pf = fopen("date.txt", "wb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	int arr[5] = { 1,2,3,4,5 };
	int count = sizeof(arr) / sizeof(arr[0]);
	fwrite(arr, sizeof(arr[0]), count, pf);
    fclose(pf);
    pf = NULL;
	return 0;
}

date.txt文件:

我们以二进制的形式写到文件中去所以显示是乱码。

一会我们可以用fread函数读取再打印出来。接着向下看。

2 fread函数详解

头文件:stdio.h

函数有四个参数,只适用于文件输入流

作用:将文件流中的count个size字节大小的数据以二进制的形式输入到ptr所指向的地址中。

返回值是成功从文件流中读取到的size字节大小的字符数目。和fwrite返回值类似。

演示:

#include <stdio.h>
int main()
{
	FILE* pf = fopen("date.txt", "rb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	int arr[5] = { 0 };
	int count = sizeof(arr) / sizeof(arr[0]);
	fread(arr, sizeof(arr[0]), count, pf);
	for (int i = 0; i < count; i++)
	{
		printf("%d ", arr[i]);
	}
	fclose(pf);
	pf = NULL;
	return 0;
}

我们从文件中成功读取到了我们之前以二进制放进去放进去的1,2,3,4,5并打印出来。

当我们不知到文件中有多少个字符是可以用下面的方法将文件全部数据读取出来:

#include <stdio.h>
int main()
{
	FILE* pf = fopen("date.txt", "rb");
	if (pf == NULL)
	{
		perror("fopen");
		return 1;
	}
	int arr[10] = { 0 };
	int i = 0;
	//每次读取一个数据,直到读到文件末尾返回值为0,结束读取
	while (fread(arr+i, sizeof(arr[0]), 1, pf) != 0)
	{
		i++;
	}
	for (i = 0; i < 10; i++)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}

这样就将文件中的1,2,3,4,5读取出来放到了arr数组中去了,并打印了出来。

感谢观看,欢迎在评论区讨论。

;