typedef struct point_record { char point_name[100]; // 监测点名称 float residual_chlorine; // 余氯值 float conductivity; // 电导率 float ph; // pH值 float orp; // ORP值 float turbidity; // 浊度值 char time[100]; // 时间} point_record;typedef struct point_set { //监测点集合的数据结构体 int num_points; //当前点集合中实际包含的点的数量 point_record data[MAX_POINTS];//data 表示点的记录数组,最多能够容纳 MAX_POINTS 个点} point_set;void save_data(point_set* data) { FILE* fp; fp = fopen("water_quality_data.txt", "wb"); if (fp == NULL) { printf("保存文件失败!\n"); return; } fwrite(data, sizeof(point_set), 1, fp); fclose(fp);}void load_data(point_set* data) { FILE* fp; fp = fopen("water_quality_data.txt", "rb"); if (fp == NULL) { return; } fread(data, sizeof(point_set), 1, fp); fclose(fp);}如何修改以上代码不用二进制写入文件
时间: 2023-12-03 09:46:57 浏览: 77
可以使用文本模式写入文件,将结构体的每个成员依次写入文件中,可以使用fprintf函数。修改后的代码如下:
```
typedef struct point_record {
char point_name[100]; // 监测点名称
float residual_chlorine; // 余氯值
float conductivity; // 电导率
float ph; // pH值
float orp; // ORP值
float turbidity; // 浊度值
char time[100]; // 时间
} point_record;
typedef struct point_set {
//监测点集合的数据结构体
int num_points; //当前点集合中实际包含的点的数量
point_record data[MAX_POINTS];//data 表示点的记录数组,最多能够容纳 MAX_POINTS 个点
} point_set;
void save_data(point_set* data) {
FILE* fp;
fp = fopen("water_quality_data.txt", "w");
if (fp == NULL) {
printf("保存文件失败!\n");
return;
}
fprintf(fp, "%d\n", data->num_points); // 先写入点的数量
for (int i = 0; i < data->num_points; i++) {
fprintf(fp, "%s %f %f %f %f %f %s\n", data->data[i].point_name, data->data[i].residual_chlorine, data->data[i].conductivity, data->data[i].ph, data->data[i].orp, data->data[i].turbidity, data->data[i].time);
}
fclose(fp);
}
void load_data(point_set* data) {
FILE* fp;
fp = fopen("water_quality_data.txt", "r");
if (fp == NULL) {
return;
}
fscanf(fp, "%d", &(data->num_points)); // 先读取点的数量
for (int i = 0; i < data->num_points; i++) {
fscanf(fp, "%s %f %f %f %f %f %s", data->data[i].point_name, &(data->data[i].residual_chlorine), &(data->data[i].conductivity), &(data->data[i].ph), &(data->data[i].orp), &(data->data[i].turbidity), data->data[i].time);
}
fclose(fp);
}
```
阅读全文