c语言:图书信息包括:书名、出版社、价格,从book.txt文件中读取5条图书信息,将其按照价格从低到高排序后,输出全部图书信息至bookpaixu.txt中,并在屏幕显示
时间: 2023-07-16 10:16:05 浏览: 87
以下是C语言代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 5
#define MAX_LENGTH 50
struct Book {
char title[MAX_LENGTH];
char publisher[MAX_LENGTH];
float price;
};
void swap(struct Book* a, struct Book* b) {
struct Book temp = *a;
*a = *b;
*b = temp;
}
void sort_books(struct Book books[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (books[j].price > books[j + 1].price) {
swap(&books[j], &books[j + 1]);
}
}
}
}
int main() {
FILE* fp;
struct Book books[MAX_BOOKS];
int count = 0;
// 从文件中读取图书信息
fp = fopen("book.txt", "r");
if (fp == NULL) {
printf("无法打开文件\n");
exit(1);
}
while (count < MAX_BOOKS && fscanf(fp, "%s %s %f", books[count].title, books[count].publisher, &books[count].price) == 3) {
count++;
}
fclose(fp);
// 对图书信息进行排序
sort_books(books, count);
// 输出排序后的图书信息
fp = fopen("bookpaixu.txt", "w");
if (fp == NULL) {
printf("无法创建文件\n");
exit(1);
}
printf("排序后的图书信息:\n");
for (int i = 0; i < count; i++) {
printf("%s %s %.2f\n", books[i].title, books[i].publisher, books[i].price);
fprintf(fp, "%s %s %.2f\n", books[i].title, books[i].publisher, books[i].price);
}
fclose(fp);
return 0;
}
```
该程序首先定义了一个结构体 `Book`,包含图书的三个属性:书名、出版社和价格。然后定义了两个辅助函数:`swap` 和 `sort_books`。`swap` 函数用于交换两个图书对象,`sort_books` 函数用于对图书数组进行冒泡排序。
在 `main` 函数中,程序读取文件中的图书信息,然后对图书信息进行排序,并将排序后的结果输出到文件和屏幕上。需要注意的是,在输出到文件时需要使用 `fprintf` 函数而不是 `printf` 函数。
阅读全文