fread和fwrite的使用

时间:2022-08-20 07:06:43

fread和fwrite的使用

fread和fwrite一般用于二进制文件的输入/输出,要不然你打开fwrite写入的文件就是乱码。

1.fread和fwrite函数

数据块I/O fread与fwrite
函数原型:
size_t fread(void *buffer, size_t size, size_t, count, FILE *pf)
size_t fwrite(void *buffer, size_t size, size_t count, FILE *pf)
功能:读写数据块(将内存的内容直接写入磁盘)
返回值:成功,返回读/写的个数,出错或文件尾,返回0.
参数含义:
buffer 从pf中读取到buffer/将buffer中的写入到pf中去。
size 每个要读/写的数据块的大小。
count 要读/写的数据块的个数
fp 要读/写的文件指针
typedef unsigned size_t


2. 文本与二进制文件之间的区别是\n和\r之间的转换。

3.例子

#define  _CRT_SECURE_NO_WARNINGS
#include
<stdio.h>
#include
<stdlib.h>


void main1()
{
int a[100];
printf(
"%p", a);
for (int i = 0; i < 100;i++)
{
;
printf(
"\n%d", a[i] = i);
}

FILE
*pf = fopen("C:\\1.bin", "r");

int num=fwrite(a, sizeof(int), 99, pf);//第一个内存首地址,第二个元素大小,第三个个数
printf("fwrite return =%d", num);//返回写入成功的个数.失败返回0
fclose(pf);


system(
"pause");

}
void write()
{
int a[100];

for (int i = 0; i < 100; i++)
{
printf(
"\n%d", a[i] = i);
}
FILE
*pf = fopen("C:\\1.bin", "wb");
int num = fwrite(a, sizeof(int), 100, pf);//第一个内存首地址,第二个元素大小,第三个个数
printf("fwrite return =%d", num);//返回写入成功的个数.失败返回0
fclose(pf);
}

void read()
{
void *p = malloc(400);
printf(
"%p\n", p);
FILE
*pf = fopen("C:\\1.bin", "rb");
int num= fread(p, 4, 100, pf);//第一个内存首地址,第二个元素大小,第三个个数
printf("fread return =%d", num);//返回读取成功个数
fclose(pf);
}

void main()
{
read();

system(
"pause");
}