一、 实验目的
1 .掌握结构体类型变量的定义和使用。
2 .掌握结构体类型数组的概念和应用。
3 .学会使用文件打开、关闭、读、写等文件操作函数。
二、实验例题
1 .运行下面的程序,查看结构体变量占用内存的字节数及结构体变量的使用。
main()
{
struct student
{ char name[20] ;
int age ;
char sex ;
} a={ “ Wang Hong ”, 22 ,‘ M ' } ;
int m;
m=sizeof(a);
printf( “ %s\t%d\t%c\n ” ,a.name,a.age,a.sex);
printf( “ %d\n ” ,m);
}
2 .输出三个学生的信息。
struct stud
{ long num;
char name[20];
int age;
char sex;
float score;
}
main()
{ struct stud student[3]={{98101,”Wang Hong”,19,'M',88.5} ,
{98102,”Li ling”,18,'F',89.5},{98103,”Zhang Feng”,19,'M',77.5}};
int i;
printf(“\nrecord\tnum\tname\t\tage\tsex\tscore\n”);
for(i=0;i<3;i++)
printf(“%3d\t%-ld\t%-8s\t%-d\t%-c\t% -3.1f \n”,
i,student[i].num, student[i].name, student[i].age, student[i].sex, student[i].score);
}
3 .使用指向结构体的指针,输出上题中的三个学生信息。
struct stud
{ long num;
char name[20];
int age;
char sex;
float score;
}
main()
{ struct stud student[3]={{98101,”Wang Hong”,19,'M',88.5} ,
{98102,”Li ling”,18,'F',89.5},{98103,”Zhang Feng”,19,'M',77.5}};
struct stud *p;
int i;
p=student;
printf(“\nrecord\tnum\tname\t\tage\tsex\tscore\n”);
for(i=0;i<3;i++,p++)
printf(“%3d\t%-ld\t%-8s\t%-d\t%-c\t% -3.1f \n”,
i,(*p).num, (*p).name, p->age, p->sex, p->score);
}
1 .把文件 f1.doc 中的内容复制到文件 f2.doc 中去。
#include <stdio.h>
main( )
{ char c;
FILE *fp1,*fp2;
fp1=fopen("f1.doc", "r");
fp2=fopen("f2.doc","w");
c=fgetc(fp1);
while(c!=EOF)
{ fputc(c,fp2);
c=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}
2 .统计文件 myfile.doc 中所包含的字符的个数。
#include <stdio.h>
#define NULL 0
main( )
{ FILE *fp;
long num=0;
char c;
if((fp=fopen("myfile.doc","r"))==NULL)
{ printf("Can't Open File\n");
exit(0); }
c=fgetc(fp);
while(c!=EOF)
{ num++; c=fgetc(fp); }
printf("num=%ld\n",num);
fclose(fp);
}
6 .从键盘输入一些字符,逐个把它们复制的磁盘上,直到输入一个“ # ”为止。
#include <stdio.h>
main()
{ FILE *fp;
char ch,filename[10];
scanf( “ %s ” ,filename);
if (fp=fopen(filename, “ w ” ))==NULL)
{ printf( “ Can not open the file.\n ” );
exit(0);
}
ch=getchar();
while(ch!= ‘ # ' )
{ fputc(ch,p);
putchar(ch);
ch=getchar(); }
fclose(fp); }
运行时输入如下数据:
file1.c ↙
computer and c# ↙
四、实验习题
1 . 文件“ filename ”的内容为字符串“ AebCEF? ”,把其中的大写字母转换成小写字母并存入文件“ file ”中。
2 .编程统计文件中的字符的个数。 |