用fread函数读取文件中的前五个数字并打印
时间: 2024-03-18 09:39:11 浏览: 28
假设文件中存储的是二进制形式的int类型数据,可以使用以下代码读取文件中的前五个数字并打印:
```c
#include <stdio.h>
int main() {
int arr[5];
FILE *fp = fopen("data.txt", "rb"); // 以二进制方式打开文件
if(fp != NULL){
fread(arr, sizeof(int), 5, fp); // 读取前5个数字到数组中
for(int i=0; i<5; i++){
printf("%d ", arr[i]); // 打印数字
}
fclose(fp); // 关闭文件
}
return 0;
}
```
其中,arr为存储数字的数组,sizeof(int)表示一个int类型的数据占用的字节数,5表示要读取的元素个数(即前5个数字)。
相关问题
用fread函数读取文件中的二进制数据到二维数组
可以使用以下代码片段来读取二进制文件中的数据到二维数组中:
```c
#include <stdio.h>
#include <stdlib.h>
#define ROWS 10
#define COLS 10
int main() {
FILE *fp;
int arr[ROWS][COLS];
int i, j;
fp = fopen("data.bin", "rb"); // 打开二进制文件
if (fp == NULL) {
perror("Error opening file");
exit(EXIT_FAILURE);
}
// 读取数据到二维数组中
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
fread(&arr[i][j], sizeof(int), 1, fp);
}
}
// 输出数组中的数据
for (i = 0; i < ROWS; i++) {
for (j = 0; j < COLS; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
fclose(fp); // 关闭文件
return 0;
}
```
上述代码中,首先定义了一个二维数组 `arr`,然后使用 `fopen` 函数打开二进制文件,并使用 `fread` 函数将文件中的数据读取到数组中。`fread` 函数的第一个参数为要读取的数据的存储位置,第二个参数为每个数据的大小,第三个参数为要读取的数据的数量,第四个参数为要读取数据的文件指针。在读取完数据后,输出数组中的数据,并使用 `fclose` 函数关闭文件。
用fread函数读取二进制文件中的数据到二维数组
假设二进制文件中存储的是一个二维数组,可以按照以下步骤使用 fread 函数读取数据:
1. 打开二进制文件,获取文件指针。
```c
FILE* fp = fopen("binary_file.bin", "rb");
```
2. 确定数组的大小,申请对应大小的内存。
```c
int rows = 10; // 数组行数
int cols = 5; // 数组列数
int** arr = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
arr[i] = (int*)malloc(cols * sizeof(int));
}
```
3. 使用 fread 函数读取数据到数组中。
```c
fread(arr[0], sizeof(int), rows * cols, fp);
```
4. 关闭文件,释放内存。
```c
fclose(fp);
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
```
完整代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp = fopen("binary_file.bin", "rb");
if (!fp) {
printf("Failed to open file.\n");
return 1;
}
int rows = 10; // 数组行数
int cols = 5; // 数组列数
int** arr = (int**)malloc(rows * sizeof(int*));
for (int i = 0; i < rows; i++) {
arr[i] = (int*)malloc(cols * sizeof(int));
}
fread(arr[0], sizeof(int), rows * cols, fp);
fclose(fp);
// 输出数组内容
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```