实验项目编号 06实验项目名称文件操作实验学时 2学时实验时间 2016.12.20实验地点 教一 503指导老师周宏生
’\n’写到文件里)。
(4)利用fgets函数将文件里的字符串读出显示到屏幕上
(知识点:文本文件的打开、关闭操作,fopen函数和fputs函数的使用。)
2、修改上题的程序:用结构体定义学生学号、姓名、成绩,输入若干个数据到file2.txt中,并将其显示在显示器上。
要求:
(1)定义一个结构体数组,数组元素为结构体类型,成员有学号、姓名、成绩,数组长度为SIZE。
(2)定义一个save函数,利用fwite函数将数组中的元素写到指定的file2.txt文件中。
(3)定义一个print函数,利用fread函数将file2.txt文件中的成组数据读入到内存,再显示到屏幕上。
(4)在主函数里调用save和print 函数。
(知识点:二进制文件的打开、关闭操作,fwite函数和fread函数的使用。)
3、应用读写定位指针,将2中的第奇数个学生的数据,写入到另一个file3.txt文件中并将其显示在显示器上进行比较。
要求:
(1)按二进制只读方式分别打开file2.txt和file3.txt文件。(注意:需要设两个文件指针)
(2)利用fseek函数将文件位置标记指向file2.txt文件开头,每次位移量应定位在第奇数个学生上。
(3)利用fread函数将file2.txt文件中的当前学生数据读入到内存中的结构体数组元素上,再显示到屏幕上。
(4)利用fwite函数将数组中的元素写到指定的file3.txt文件中。
(5)利用feof函数判断file2.txt文件信息是否读完,最后关闭两个文件。
(知识点:fseek函数和feof函数的使用。)
三、代码如下
#include
#include
#include
int main()
{
FILE *fp;
char ch[10];
int i=0;
if(!(fp=fopen("file1.txt","w")))//只写,打开文本文件
{
printf("无法打开文件\n");
exit(0);
}
printf("请输入信息,以#结束:\n");
gets(ch);
while(strcmp(ch,"#")){
fputs(ch,fp);
fputs("\n",fp);
gets(ch);
}
fclose(fp);//关闭文件
if(!(fp=fopen("file1.txt","r")))//只读,打开文本文件
{
printf("无法打开文件\n");
exit(0);
}
while(fgets(ch,10,fp)!=0)
{
printf("%s",ch);
i++;
}
fclose(fp);//关闭文件
return 0;
}
/*
#include
#include
#define SIZE 5
struct student//学生结构体
{
int num;//学号
char name[20]; //姓名
int score; //成绩
}stu[SIZE];
void save()
{
FILE *fp;
int i=0;
if(!(fp=fopen("file2.txt","w")))//只写,打开文本文件
{
printf("无法打开文件\n");
exit(0);
}
for(i=0;i
fwrite(&stu[i],sizeof(struct student),1,fp);
fclose(fp);//关闭文件
}
void print()
{
FILE *fp;
int i=0;
if(!(fp=fopen("file2.txt","r")))//只读,打开文本文件
{
printf("无法打开文件\n");
exit(0);
}
for(i=0;i
{
fread(&stu[i],sizeof(struct student),1,fp);
printf("%d\t %s\t %d\n",stu[i].num,stu[i].name,stu[i].score);
}
fclose(fp);//关闭文件
}
int main()
{
int i;
printf("请输入学号,姓名,分数:\n");
for(i=0;i
sc