FILE *fp; fp = fopen("data.bin", "rb"); // 以二进制模式打开文件 if (fp == NULL) { printf("Failed to open file\n"); return -1; } int data[100][80]; // 定义一维数组,用于存储读取的数据 fread(data, sizeof(int), 100*80, fp); // 读取数据到数组中 fclose(fp); // 关闭文件
时间: 2024-04-06 16:32:22 浏览: 63
上述代码片段的作用是打开名为"data.bin"的文件,以二进制模式读取其中的数据,并将其存储到二维数组data中。
具体来说,代码分为以下几个步骤:
1. 声明一个指向FILE类型的指针变量fp,该变量将用于表示文件对象。
2. 调用fopen函数,打开名为"data.bin"的文件,并指定以二进制模式打开。其中,"rb"表示以二进制只读模式打开文件。
3. 检查文件是否成功打开。如果文件打开失败,则输出一条错误信息,并返回-1表示程序异常终止。
4. 声明一个二维数组data,用于存储从文件中读取的数据。其中,数组的大小为100×80,与文件中的矩阵大小相同。
5. 调用fread函数,从文件中读取数据到数组data中。其中,sizeof(int)表示每个数据元素的大小为4字节。
6. 关闭文件,使用fclose函数,释放文件资源。
整个代码段的作用是将名为"data.bin"的文件中的数据读取到二维数组data中。
相关问题
ubuntu 下 FILE* fp 保存二进制文件
在Ubuntu系统下,如果你想使用FILE*指针fp来保存二进制文件,你需要使用标准库函数如fopen(), fwrite()和fclose()。以下是基本步骤:
1. 打开文件:首先,通过`fopen()`函数打开一个二进制模式("rb+" 或 "wb+"),以便读取和写入二进制数据。例如:
```c
fp = fopen("binary_file.bin", "wb+");
```
2. 写入数据:使用`fwrite()`函数将二进制数据写入到fp所指向的文件中。确保提供的缓冲区包含要写入的数据。例如:
```c
const void *data = ...; // 你要写入的二进制数据
size_t size = sizeof(data); // 数据大小
fwrite(data, size, 1, fp);
```
3. 关闭文件:完成操作后,别忘了使用`fclose()`关闭文件,释放资源:
```c
if (fp) {
fclose(fp);
fp = NULL;
}
```
C 语言 请编程:使用附件提供的student.h中的学生基本信息表类型Student建立Student数组a,从附件提供的data1.bin二进制文件中读入全部学生的8列信息项到Student数组a中,找出其中2004年出生的学生,创建名为data2.bin的二进制文件,将找出的学生的8列信息项以二进制格式写入该文件中。执行程序后,找到data2.bin文件试用记事本打开查看并截图,将该截图和代码复制来作为答案。
好的,以下是读取data1.bin文件,筛选出2004年出生的学生信息并写入data2.bin文件的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include "student.h"
int main(){
FILE *fp1, *fp2;
Student a[6];
int i, count = 0;
// 从data1.bin文件中读取全部学生信息到数组a中
fp1 = fopen("data1.bin", "rb");
if(fp1 == NULL){
printf("无法打开文件!\n");
exit(1);
}
fread(a, sizeof(Student), 6, fp1);
fclose(fp1);
// 找出2004年出生的学生并保存到新数组中
Student b[6];
for(i=0; i<6; i++){
if(a[i].birthday.year == 2004){
b[count++] = a[i];
}
}
// 将新数组中的学生信息以二进制形式写入data2.bin文件中
fp2 = fopen("data2.bin", "wb");
if(fp2 == NULL){
printf("无法打开文件!\n");
exit(1);
}
fwrite(b, sizeof(Student), count, fp2);
fclose(fp2);
printf("找到%d个2004年出生的学生!\n", count);
return 0;
}
```
请注意,这里同样使用了student.h中定义的Student结构体,如果您没有提供该文件,请先定义该结构体,再使用以上代码。
运行程序后,会生成data2.bin文件,您可以使用记事本打开该文件查看其二进制内容。
同时,以下是student.h文件的内容:
```c
#ifndef _STUDENT_H_
#define _STUDENT_H_
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
char gender; // 性别
struct {
int year;
int month;
int day;
} birthday; // 出生日期
float score; // 成绩
int rank; // 排名
float total_score; // 总分
} Student;
#endif
```
阅读全文