《C语言》实验报告
int num; char name[20]; int score[3]; char flag; }a[6];
从键盘输入6个学生的数据,其中flag的值应为‘\\n’。然后将这6个学生的数据分别写入名为stud1.txt的文本文件和名为stud2.dat的二进制文件中。编写源程序,给出注释及运行结果。
#include
int num;
/*结构体中包含整型变量num*/ char name[20] ;
/*结构体中包含长度为20字符串型变量name*/ int score[3];
/*结构体中包含长度为3的整型数组score[3]*/ char flag;
/*结构体中包含字符型变量flag*/ }a[6];
/*在结构体中定义长度为6的student变量a*/ void main()
/*空类型的无参主函数*/ {
void input(struct student *p); /*声明空类型函数input函数包含一个指向结构体的指针变量p*/ void print(struct student *p,int n); /*声明空类型函数print函数包含一个指向结构体的指针变量p和整型变量n*/
FILE *fp ;
/*定义一个指向文件的指针变量fp*/ int n=6;
/*定义整型变量n并赋初值6*/ input(a);
/*调用函数input其实参为a*/ print(a,n);
/*调用函数print其实参为a和n*/ fp=fopen(\
/*打开名字为stud1.txt的文件,打开方式为只写,并将fopen带回的
- 5 -
《C语言》实验报告
指针赋给fp*/
fwrite(a,sizeof(struct student),6,fp); /*从a所指向的内存中,读入6个大小为student大小的数据块写入到fp所指向的文件中*/
fclose(fp); /*关闭文件*/
fp=fopen(\ /*打开名为stud2.dat的文件,打开方式为二进制只写,并将fopen带回的指针赋给fp*/
fwrite(a,sizeof(struct student ),6,fp); /*从a所指向的内存中,读入6个大小为student大小的数据块写入到fp所指向的文件中*/
fclose(fp); /*关闭文件*/ }
void input(struct student *p)
/*定义空类型的函数input其形参为一个指向结构体的指针变量p*/ { int i;
/*定义整型变量i*/ for(i =0;i<6;i++) /*i从0到5进行循环*/ { printf(\请输入 第%d名同学 数字,姓名,三门成绩:\\n\+ 1 ) ;
/*标准输出函数,屏幕上输出\请输入 第%d名同学 数字,姓名,三门成绩:\其中\以整型输出最后换行 */
scanf(\ /*标准输入函数,从从键盘以整形和字符串输入2个数分别存到p[i].num和p[i].name中*/
scanf(\ /*标准输入函数,以整型从键盘输入三个数存到p[i].score[0]和p[i].score[1]和p[i].score[2]中*/
p[i].flag=getchar(); /*把数的一个字符赋给p[i].flag*/ } }
void print(struct student *p,int n)
/*定义空类型函数print函数包含一个指向结构体的指针变量p和整型变量n*/
{
int i;
/*定义整型变量i*/
- 6 -
《C语言》实验报告
printf(\数字 姓名 课程1 课程2 课程3 \\n\
/*标准输出函数,输出\数字 姓名 课程1 课程2 课程3 \并换行*/
for(i=0;i printf(\ /*标准输出函数,以整型占8列宽度靠左侧从屏幕上输出p[i].score[0],p[i].score[1],p[i].score[2]*/ } } 四、实验结果: 1、输出结果: 2、输出结果: - 7 - 《C语言》实验报告 五、实验体会或遇到问题: 1、还需要继续看书,多看,多做。 2、虽然做课内实验很麻烦,但能收获很多,使知识得到运用。 3、当真正自己去敲代码时才能发现许多细节上的问题。 4、对于文件存储,读取,及其所在位置理解掌握不够。 5、还需努力。 - 8 - 《C语言》实验报告 - 9 -