C语言使用fread向txt写入数组
时间: 2023-09-18 07:12:17 浏览: 69
可以使用以下代码将一个数组写入到txt文件中:
```c
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
FILE *fp;
fp = fopen("output.txt", "wb"); // 打开文件,以二进制写入方式
fwrite(arr, sizeof(int), 5, fp); // 将数组写入文件
fclose(fp); // 关闭文件
return 0;
}
```
需要注意的是,使用 `fread` 和 `fwrite` 函数读写二进制文件时需要使用 `wb` 和 `rb` 模式打开文件,而不是 `w` 和 `r` 模式。
相关问题
c语言fwrite 结构体数组写入文件 fread下读取文件到结构体数组
下面是一个简单的例子,演示如何使用 `fwrite` 函数将结构体数组写入文件,以及使用 `fread` 函数从文件中读取数据到结构体数组:
```c
#include <stdio.h>
#include <stdlib.h>
struct student
{
char name[20];
int age;
float score;
};
int main()
{
FILE *fp;
char filename[] = "example.bin";
struct student stu[3] = {{"Tom", 18, 90.5}, {"Jerry", 19, 88.6}, {"Alice", 20, 92.0}};
struct student read_stu[3];
int i;
// 写入结构体数组到文件
fp = fopen(filename, "wb");
fwrite(stu, sizeof(struct student), 3, fp);
fclose(fp);
// 从文件中读取数据到结构体数组
fp = fopen(filename, "rb");
fread(read_stu, sizeof(struct student), 3, fp);
fclose(fp);
// 打印读取到的结构体数组内容
for(i = 0; i < 3; i++)
{
printf("name: %s, age: %d, score: %.1f\n", read_stu[i].name, read_stu[i].age, read_stu[i].score);
}
return 0;
}
```
上述代码定义了一个 `student` 结构体,包含了学生的姓名、年龄和成绩。首先,使用 `fwrite` 函数将结构体数组 `stu` 写入到名为 `example.bin` 的二进制文件中。然后,使用 `fread` 函数从文件中读取数据到结构体数组 `read_stu` 中,并打印出读取到的结构体数组内容。
需要注意的是,写入和读取的结构体数组的大小必须一致,否则可能会导致数据读取错误。
请用C语言实现双结构体数组写入文件和读取文件操作,使用printf函数
以下是双结构体数组写入文件和读取文件的示例代码,使用了fread、fwrite和printf函数:
```c
#include <stdio.h>
typedef struct {
int id;
char name[20];
} Student;
typedef struct {
int num;
Student stu[10];
} Class;
int main() {
// 创建一个包含两个班级的双结构体数组
Class classes[2];
classes[0].num = 3;
classes[0].stu[0].id = 1001;
sprintf(classes[0].stu[0].name, "Tom");
classes[0].stu[1].id = 1002;
sprintf(classes[0].stu[1].name, "Jerry");
classes[0].stu[2].id = 1003;
sprintf(classes[0].stu[2].name, "Alice");
classes[1].num = 2;
classes[1].stu[0].id = 2001;
sprintf(classes[1].stu[0].name, "Bob");
classes[1].stu[1].id = 2002;
sprintf(classes[1].stu[1].name, "Eve");
// 将数据写入文件
FILE *fp = fopen("classes.dat", "wb");
if(fp == NULL) {
printf("无法打开文件\n");
return 1;
}
fwrite(classes, sizeof(Class), 2, fp);
fclose(fp);
// 从文件中读取数据
fp = fopen("classes.dat", "rb");
if(fp == NULL) {
printf("无法打开文件\n");
return 1;
}
Class classes_read[2];
fread(classes_read, sizeof(Class), 2, fp);
fclose(fp);
// 输出读取到的数据
int i, j;
for(i = 0; i < 2; i++) {
printf("班级%d有%d个学生:\n", i + 1, classes_read[i].num);
for(j = 0; j < classes_read[i].num; j++) {
printf("学生%d:ID=%d,姓名=%s\n", j + 1, classes_read[i].stu[j].id, classes_read[i].stu[j].name);
}
}
return 0;
}
```
运行结果:
```
班级1有3个学生:
学生1:ID=1001,姓名=Tom
学生2:ID=1002,姓名=Jerry
学生3:ID=1003,姓名=Alice
班级2有2个学生:
学生1:ID=2001,姓名=Bob
学生2:ID=2002,姓名=Eve
```