fread与fwrite的简单运用:
用fread()与fwrite()将学生信息写到磁盘文件上,接着将磁盘文件上存储的学生信息显示在终端。
了解fread(数组地址, 字节长度, 读取次数,文件指针 ):向指针所指的文件中每次读取字节长度数的内容存储在数组中,连续读取指定的读取次数.
了解fwrite(数组地址, 字节长度, 写入次数,文件指针 ):将数组中的内容,按照给定的字节数,写入指针所指的文件文本中,连续写入给定的次数。
#include <stdio.h>
#include <stdlib.h>
#define N 50
struct student{
char name[10];
char age[4];
char adress[26];
}s[15];
void save(char *filename, int n)
{
FILE *p;
int i;
if( (p=fopen(filename,"wb"))==NULL)
{
printf("文件打开失败");
exit(0);
}
for(int i=0; i<n; i++)
if(fwrite(&s[i],sizeof(struct student),1,p)!=1)
printf("文件写入失败\n");
fclose(p);
}
void show(char *filename, int n)
{
FILE *p;
int i;
if((p = fopen(filename,"rb"))==NULL)
{
printf("文件打开失败\n");
exit(0);
}
printf("\n终端显示学生信息:\n");
for(i=0; i<n; i++)
{
fread(&s[i],sizeof(struct student),1,p);
printf("姓名: %s 年龄:%s 籍贯: %s\n",s[i].name,s[i].age,s[i].adress);
}
fclose(p); //记得打开文件,操作结束后要关闭文件,防止数据流失。
}
int main()
{
FILE *p;
char ch[N];
int n;
printf("请输入要存储的文本路劲: ");
scanf("%s",ch);
printf("请输入学生个数: ");
scanf("%d",&n);
printf("输入学生信息:\n");
for(int i=0; i<n; i++)
{
scanf("%s%s%s",&s[i].name,&s[i].age,&s[i].adress);
save(ch,n); //每次输入,就紧接着调用save()函数,将信息写入磁盘文件中
}
show(ch,n);
return 0;
}
终端输入数据成功的写入磁盘文件中:
将文本中的内容读取出来,成功的显示在终端: