这个用C语言怎么写?

图书信息包括:书名、出版社、价格,从book.txt文件中读取5条图书信息,将其按照价格从低到高排序后,输出全部图书信息至bookpaixu.txt中,并在屏幕显示

需要看到你的book txt 什么样子 这几种信息之间怎么间隔?

下面是参考chatgpt的回答:
好的,以下是一个简单的示例程序,实现对书籍排序并输出到文件和屏幕上:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_BOOKS 5

typedef struct {
    char name[50];
    char publisher[50];
    float price;
} Book;

// 比较函数,按照价格从小到大排序
int cmp_by_price(const void *a, const void *b) {
    Book *bookA = (Book*) a;
    Book *bookB = (Book*) b;
    if (bookA->price < bookB->price) {
        return -1;
    } else if (bookA->price > bookB->price) {
        return 1;
    } else {
        return 0;
    }
}

int main() {
    FILE *fp_in, *fp_out;
    Book books[MAX_BOOKS];
    int i;

    // 从文件中读取书籍信息
    fp_in = fopen("book.txt", "r");
    if (fp_in == NULL) {
        printf("Failed to open book.txt\n");
        return 1;
    }
    for (i = 0; i < MAX_BOOKS; i++) {
        fscanf(fp_in, "%s %s %f", books[i].name, books[i].publisher, &(books[i].price));
    }
    fclose(fp_in);

    // 按照价格排序
    qsort(books, MAX_BOOKS, sizeof(Book), cmp_by_price);

    // 输出到文件和屏幕上
    fp_out = fopen("bookpaixu.txt", "w");
    if (fp_out == NULL) {
        printf("Failed to open bookpaixu.txt\n");
        return 1;
    }
    printf("书名\t出版社\t价格\n");
    fprintf(fp_out, "书名\t出版社\t价格\n");
    for (i = 0; i < MAX_BOOKS; i++) {
        printf("%s\t%s\t%.2f\n", books[i].name, books[i].publisher, books[i].price);
        fprintf(fp_out, "%s\t%s\t%.2f\n", books[i].name, books[i].publisher, books[i].price);
    }
    fclose(fp_out);

    return 0;
}

假设book.txt中的数据格式为:

书名1 出版社1 10.50
书名2 出版社2 25.00
书名3 出版社1 17.80
书名4 出版社3 13.20
书名5 出版社2 20.50

程序会从book.txt中读取5条图书信息,按照价格从低到高进行排序,并输出到屏幕和bookpaixu.txt文件中。

以下答案由GPT-4.5Plus大模型(语音)与博主A努力中.......共同编写:

这里是C语言实现的代码:

c
#include <stdio.h>
#include <string.h>

typedef struct {
    char name[20];
    char publisher[20];
    int price; 
} Book;

int main() {
    Book books[5];
    FILE *f = fopen("book.txt", "r");
    
    for (int i = 0; i < 5; i++) {
        fscanf(f, "%s %s %d", books[i].name, books[i].publisher, &books[i].price);
    }
    fclose(f);

    for (int i = 0; i < 5; i++) {
        for (int j = i + 1; j < 5; j++) {
            if (books[i].price > books[j].price) {
                Book temp = books[i];
                books[i] = books[j];
                books[j] = temp;
            }
        }
    }

    FILE *f2 = fopen("bookpaixu.txt", "w");
    for (int i = 0; i < 5; i++) {
        fprintf(f2, "%s %s %d\n", books[i].name, books[i].publisher, books[i].price); 
        printf("%s %s %d\n", books[i].name, books[i].publisher, books[i].price);
    }
    fclose(f2);
}

代码实现步骤:

  1. 定义Book结构体,包含书名、出版社和价格属性
  2. 打开book.txt文件,读取5条信息存储到Book数组books中
  3. 使用冒泡排序对books数组按价格从低到高排序
  4. 打开bookpaixu.txt文件,将排序后的信息写入文件并打印到屏幕
  5. 结果同样是5条图书信息按价格从低到高显示,并输出到文件bookpaixu.txt