gpt4 book ai didi

c - 在C中对文本文件中的数据进行排序

转载 作者:行者123 更新时间:2023-11-30 16:29:04 25 4
gpt4 key购买 nike

我发现在这个练习中,我必须创建一个数据结构,读取一些输入,将输入存储在“适当的”数据结构上,然后将所有内容打印到文本文件中。

我期待添加一个根据星级对酒店列表进行排序的功能,这样如果一家酒店有 5 星级,它将位于列表的顶部。可以这样做吗?我可以用数组做到这一点吗?

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

struct inputs {
char nome[30];
char via[30];
char stars[30];
int num;
};

int main(void)
{

struct inputs inputs = {"", "", ""};

FILE *cfPtr; // cfPtr = clients.txt file pointer
// fopen opens file. Exit program if unable to create file
if ((cfPtr = fopen("clients.txt", "w")) == NULL) {
puts("File could not be opened");
}
else {
puts("Enter the account, name, and balance.");
puts("Enter EOF to end input.");
printf("%s", "? ");


//scanf("%[^\n]s%[^\n]s%[^\n]s", inputs.via, inputs.nome, inputs.stars);



fgets(inputs.nome, 30, stdin);
inputs.nome[strcspn(inputs.nome,"\n")] = '\0';
fgets(inputs.via, 30, stdin);
inputs.via[strcspn(inputs.via,"\n")] = '\0';
fgets(inputs.stars, 30, stdin);
inputs.stars[strcspn(inputs.stars,"\n")] = '\0';

inputs.num = strlen(inputs.stars);


//printf("%s%s%s", inputs.nome, inputs.via, inputs.stars);

// write account, name and balance into file with fprintf
while (!feof(stdin)) {
fprintf(cfPtr, "%s; %s; %s; %d\n", inputs.nome, inputs.via, inputs.stars, inputs.num);

/*scanf("%[^\n]s", inputs.via);
scanf("%[^\n]s", inputs.nome);
scanf("%[^\n]s", inputs.stars);*/
fgets(inputs.nome, 30, stdin);
inputs.nome[strcspn(inputs.nome,"\n")] = '\0';
fgets(inputs.via, 30, stdin);
inputs.via[strcspn(inputs.via,"\n")] = '\0';
fgets(inputs.stars, 30, stdin);
inputs.stars[strcspn(inputs.stars,"\n")] = '\0';
inputs.num = strlen(inputs.stars);

}

fclose(cfPtr); // fclose closes file
}
}

最佳答案

我建议创建一个结构类型来表示一家酒店,然后创建该结构类型的实例数组。例如,类型可以如下。

struct Hotel {
uint8_t stars;
char name[HOTELNAMESIZE];
};

struct Hotel hotels[NRHOTELS];

现在您可以实现一个排序函数,根据 hotels[i].starshotels 数组进行排序。当然,这是一个非常简单的实现,具有硬编码的 HOTELNAMESIZE 和 NRHOTELS 值,但可能是一个不错的起点。

关于c - 在C中对文本文件中的数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027909/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com