#include "stdio.h"
#include "stdlib.h"
#include "string.h"
typedef struct vegetables {
// 蔬菜名称
char name[20];
// 销售量
int saleVolume;
// 销售价格
int salePrice;
}Vegetables;
char basePath[20] = "E:\\clion-space\\";
int readFileLine(FILE *fp) {
int len = 0;
char ch;
while ((ch = fgetc(fp)) != EOF) {
if (ch == '\n') {
len++;
}
}
return len;
}
int totalStatistic() {
// 文件名
char filename[20] = "file1.txt";
int total = 0;
for (int i = 1; i <= 7; ++i) {
// 文件路径
char filePath[40] = {};
filename[4] = (char)(i + '0');
strcat(filePath, basePath);
strcat(filePath, filename);
FILE *fp = fopen(filePath, "r");
if (NULL == fp) {
printf("打开文件%d失败", i);
continue;
}
total += readFileLine(fp);
fclose(fp);
}
return total;
}
int readData(FILE *fp, int index, Vegetables* arr) {
while (!feof(fp)) {
fscanf(fp, "%s%d%d", arr[index].name, &arr[index].saleVolume, &arr[index].salePrice);
if (arr[index].salePrice != 0 && arr[index].saleVolume != 0) {
index++;
}
}
return index;
}
Vegetables* readDataFromFile(int len) {
Vegetables* arr = (Vegetables*) malloc(sizeof(Vegetables) * len);
int index = 0;
char filename[20] = "file1.txt";
for (int i = 1; i <= 7; ++i) {
// 文件路径
char filePath[40] = {};
filename[4] = (char)(i + '0');
strcat(filePath, basePath);
strcat(filePath, filename);
FILE *fp = fopen(filePath, "r");
if (NULL == fp) {
printf("打开文件%d失败", i);
continue;
}
// 从文件中读取数据
index = readData(fp, index, arr);
fclose(fp);
}
return arr;
}
int main() {
// 统计总数
int total = totalStatistic();
// 从文件中读取数据到arr中
Vegetables* arr = readDataFromFile(total);
for (int i = 0; i < total; ++i) {
printf("%d ----- %s %d %d\n",i, arr[i].name, arr[i].saleVolume, arr[i].salePrice);
}
// 对arr进行排序
bubbleSort(arr, total);
char *name = arr[0].name;
int totalPrice = arr[0].saleVolume * arr[0].salePrice;
for (int i = 1; i < total; ++i) {
if (strcmp(name, arr[i].name) == 0) {
totalPrice += arr[i].saleVolume * arr[i].salePrice;
} else{
printf("%s的总销售额为: %d\n", name, totalPrice);
name = arr[i].name;
totalPrice = arr[i].saleVolume * arr[i].salePrice;
}
}
printf("%s的总销售额为%d\n", name, totalPrice);
return 0;
}
结构体2022
于 2023-12-14 10:32:36 首次发布