图书信息包括:书名、出版社、价格,从book.txt文件中读取5条图书信息,将其按照价格从低到高排序后,输出全部图C语言书信息至bookpaixu.txt中,并在屏幕显示案例示范
时间: 2024-06-08 20:07:21 浏览: 122
C语言图书管理系统 链表实现 功能齐全(书籍信息以及用户信息保存在附带的txt文件中)
5星 · 资源好评率100%
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_BOOKS 5
#define MAX_NAME_LEN 50
#define MAX_PUBLISHER_LEN 50
typedef struct {
char name[MAX_NAME_LEN];
char publisher[MAX_PUBLISHER_LEN];
float price;
} Book;
int compare_books(const void* a, const void* b) {
return ((Book*)a)->price - ((Book*)b)->price;
}
int main() {
// 读取图书信息
Book books[MAX_BOOKS];
FILE* fp = fopen("book.txt", "r");
if (fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
for (int i = 0; i < MAX_BOOKS; i++) {
fscanf(fp, "%s %s %f", books[i].name, books[i].publisher, &books[i].price);
}
fclose(fp);
// 按价格排序
qsort(books, MAX_BOOKS, sizeof(Book), compare_books);
// 输出到文件和屏幕
fp = fopen("bookpaixu.txt", "w");
if (fp == NULL) {
printf("Failed to open file!\n");
return 1;
}
for (int i = 0; i < MAX_BOOKS; i++) {
fprintf(fp, "%s %s %.2f\n", books[i].name, books[i].publisher, books[i].price);
printf("%s %s %.2f\n", books[i].name, books[i].publisher, books[i].price);
}
fclose(fp);
return 0;
}
```
假设book.txt文件的内容如下:
```
C Primer Plus Pearson 68.0
C语言程序设计 高等教育出版社 32.0
C++ Primer Pearson 98.0
深入理解计算机系统 人民邮电出版社 88.0
算法 第4版 人民邮电出版社 78.0
```
那么程序的输出结果为:
```
C语言程序设计 高等教育出版社 32.00
C Primer Plus Pearson 68.00
算法 第4版 人民邮电出版社 78.00
深入理解计算机系统 人民邮电出版社 88.00
C++ Primer Pearson 98.00
```
并且bookpaixu.txt文件的内容也与此相同。
阅读全文