fread,fwrite可读写二进制数据
对于文本
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//文件内容
/*
hi\n
zhang\n
san\n
we\n
going\n
22331
*/
int main(int argc, char* argv[])
{
FILE* rfp ,* wfp;
rfp = fopen("test.txt", "r");//读文件
wfp = fopen("test2.txt", "w");//写文件
if (rfp == NULL) {
return EXIT_FAILURE;
}
char buf[128] = { 0 };
while (1) {
//每次读一个,最多读sizeof(buf)次 ret<sizeof(buf)说明读到文件尾
int ret = fread(buf, 1, sizeof(buf), rfp);
if (ret == 0)break;
printf("%d\n", ret);//这里是27个字符,文件中是32字节,因为\n被视为1个字符占用两个字节
printf("%s", buf);
fwrite(buf,1,ret,wfp);
}
fclose(rfp);
fclose(wfp);
system("pause");
return EXIT_SUCCESS;
}
对于结构体
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct {
int id;
char name[10];
int num;
}Student;
int main(int argc, char* argv[])
{
{
FILE* wfp;
wfp = fopen("test.txt", "w");
Student buf[3] = {
{1001,"zhangsan",80},
{1002,"lisi",90},
{1003,"wangwu",100}
};
fwrite(buf, sizeof(Student), sizeof(buf) / sizeof(Student), wfp);
fclose(wfp);
}
{
FILE* rfp;
rfp = fopen("test.txt", "r");
Student buf[3] = { 0 };
fread(buf, sizeof(Student), sizeof(buf) / sizeof(Student), rfp);
rfp = fopen("test.txt", "r");
for (int i = 0; i < sizeof(buf) / sizeof(Student); ++i) {
printf("id = %d name = %s num = %d\n", buf[i].id, buf[i].name, buf[i].num);
}
fclose(rfp);
}
system("pause");
return EXIT_SUCCESS;
}