C语言编码。typedef struct student{ char sno[SNOLENGTH];//学号 char name[NAME_LENGTH];//姓名 int score[COURSE_NUMBER]; //课程成绩数组 float average;//所有课程的平均成绩 三门课程成绩和平均成绩。 }STU;。* 函数名称:readFile *函数功能:读取二进制文件并存储到指针p所指向的数组 *形式参数:struct student型指针,p指向结构体数组的首地址 *形式参数:int型,rows 为结构体数组长度 *形式参数:一维字符数组,filename为二进制文件路径及名称 *形式参数:一维字符数组,mode 为文件打开模式 *返回值:int型,若打开文件失败,返回-1;否则,返回从文件成功读取的数据块个数 */ int readFile(STU *p, int rows, char filename[], char mode[])。C语言
时间: 2024-02-13 22:02:16 浏览: 67
的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SNOLENGTH 10
#define NAME_LENGTH 20
#define COURSE_NUMBER 3
typedef struct student {
char sno[SNOLENGTH];
char name[NAME_LENGTH];
int score[COURSE_NUMBER];
float average;
} STU;
int readFile(STU *p, int rows, char filename[], char mode[]) {
FILE *fp;
int i, count = 0;
fp = fopen(filename, mode);
if (fp == NULL) {
printf("Open file failed.\n");
return -1;
}
while (count < rows && fread(&p[count], sizeof(STU), 1, fp) == 1) {
count++;
}
fclose(fp);
return count;
}
```
该函数的功能是读取指定路径的二进制文件,并将文件内容存储到指向结构体数组首地址的指针中。函数参数说明如下:
- 形式参数1:指向结构体数组首地址的指针,类型为 `STU *p`
- 形式参数2:结构体数组的长度,类型为 `int rows`
- 形式参数3:二进制文件路径及名称,类型为 `char filename[]`
- 形式参数4:文件打开模式,类型为 `char mode[]`
- 返回值:读取成功的数据块个数,类型为 `int`。若打开文件失败,返回-1。
函数实现步骤如下:
1. 声明文件指针 `fp` 和计数器 `count`,并打开指定路径的二进制文件。
2. 判断文件是否打开成功,若打开失败则输出错误信息并返回-1。
3. 使用 `fread` 函数循环读取文件中的数据块,每次读取一个结构体大小的数据块,直到达到指定的行数或文件读取结束。
4. 关闭文件,返回读取成功的数据块个数。
阅读全文