教 学 大 纲
  授 课 教 案
  CAI 课 件
  实 验 指 导
  习   题
  课 程 试 卷
  参 考 资 料
 
    

    第 6 实验 结构体和文件

 

一、•  实验目的

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 .编程统计文件中的字符的个数。

 

版权所有 © 2006-2007 沈阳大学信息工程学院 计算机基础教研室