#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct Stu
{
char name[50];
int id;
}Stu;
void my_fwrite(char* path)
{
FILE* fp = NULL;
//"w+",读写方式打开,如果文件不存在,则创建\
如果文件存在,清空内容,再写
fp = fopen(path, "w+");
if (fp == NULL)
{
//函数参数只能是字符串
perror("my_fwrite fopen");
return;
}
Stu s[3];
int i = 0;
char buf[50];
for (i = 0; i < 3; i++)
{
sprintf(buf, "stu%d%d%d", i, i, i);
strcpy(s[i].name, buf);
s[i].id = i + 1;
}
//按块写文件
//s: 写入文件内容的内存首地址
//sizeof(Stu): 块的大小
//3: 块数, 写文件数据的大小 = sizeof(Stu) * 3
//fp: 文件指针
//返回值,成功写入文件的块数目
int ret = fwrite(s, sizeof(Stu), 3, fp);
printf("ret = %d\n", ret);
if (fp != NULL)
{
fclose(fp);
fp = NULL;
}
}
void my_fread(char* path)
{
FILE* fp = NULL;
//读写方式打开,如果文件不存在,打开失败
fp = fopen(path, "r+");
if (fp == NULL)
{
perror("my_fread fopen");
return;
}
Stu s[3];
//按块读文件
//s: 写入文件内容的内存首地址
//sizeof(Stu): 块的大小
//3: 块数, 读文件数据的大小 = sizeof(Stu) * 3
//fp: 文件指针
//返回值,成功读取文件的块数目
int ret = fread(s, sizeof(Stu), 3, fp);
printf("ret = %d\n", ret);
int i;
for (i = 0; i < 3; i++)
{
printf("s[%d] = %s, %d\n", i, s[i].name, s[i].id);
}
if (fp != NULL)
{
fclose(fp);
fp = NULL;
}
}
int main(void)
{
my_fwrite("../004.txt");//上一级地址
my_fread("../004.txt");
printf("\n");
system("pause");
return 0;
}
C语言 按块读写文件
最新推荐文章于 2021-05-23 19:35:23 发布