解释 C 中文件中使用的函数 fread() 和 fwrite()
问题
编写一个C程序,用于将5个学生的详细信息存储到一个文件中,并使用fread()和fwrite()
解决方案
该fread()函数一次读取整个记录。
语法
fread( & structure variable, size of (structure variable), no of records, file pointer);
例子
struct emp{ int eno; char ename [30]; float sal; } e; FILE *fp; fread (&e, sizeof (e), 1, fp);
该fwrite()函数一次写入整个记录。
语法
fwrite( & structure variable , size of structure variable, no of records, file pointer);
例子
struct emp{ int eno: char ename [30]; float sal; } e; FILE *fp; fwrite (&e, sizeof(e), 1, fp);
程序
#includestruct student{ int sno; char sname [30]; float marks; char temp; }; main ( ){ struct student s[60]; int i; FILE *fp; fp = fopen ("student1.txt", "w"); for (i=0; i<2; i++){ printf ("enter details of student %d\n", i+1); printf("学生号码:"); scanf("%d",&s[i].sno); scanf("%c",&s[i].temp); printf("学生姓名:"); gets(s[i].sname); printf("学生成绩:"); scanf("%f",&s[i].marks); fwrite(&s[i], sizeof(s[i]),1,fp); } fclose (fp); fp = fopen ("student1.txt", "r"); for (i=0; i<2; i++){ printf ("details of student %d are\n", i+1); fread (&s[i], sizeof (s[i]) ,1,fp); printf("student number = %d\n", s[i]. sno); printf("student name = %s\n", s[i]. sname); printf("marks = %f\n", s[i]. marks); } fclose(fp); getch( ); }
输出
enter details of student 1 学生号码:1 学生姓名:pinky 学生成绩:56 enter details of student 2 学生号码:2 学生姓名:rosy 学生成绩:87 details of student 1 are student number = 1 student name = pinky marks = 56.000000 details of student 2 are student number = 2 student name = rosy marks = 87.000000