我想读取下面的数据并将其存储在一个结构体中,然后按最旧的排序。我想将一个包含排序数据的结构体写入一个新文件。(按升序从最旧到最新排序)
数据类型:
24 Zachary Gordon
54 Cuba Gooding
67 Peter Killian Gallagher
36 Kyle Gallner
我想要输出:
24 Zachary Gordon
36 Kyle Gallner
54 Cuba Gooding
67 Peter Killian Gallagher
我代码:
#include <stdio.h>
#define N 4
struct Data {
int age;
char name[30];
};
void sortData(struct Data aa[]);
int main() {
struct Data aa[N];
struct Data tmp;
FILE *input, *output;
input = fopen("data.txt", "r");
output = fopen("output.txt", "w");
if (input == NULL) {
printf("Fail to read file");
}
for (int i = 0; i < N; i++) {
fscanf(input, "%d", &aa[i].name);
fgets(aa[i].name, 30, input);
}
for (int i = 0; i < N; i++) {
printf("%d %s", aa[i].age, aa[i].name);
}
fclose(input);
sortData(aa);
for (int i = 0; i < N; i++) {
fprintf(output, "%d %s", aa[i].age, aa[i].name);
}
return 0;
}
void sortData(struct Data aa[]) {
struct Data tmp;
for (int i = 0; i < N - 1; i++) {
for (int j = i + 1; j < N; j++) {
if (aa[i].age > aa[j].age) {
tmp = aa[i];
aa[i] = aa[j];
aa[j] = tmp;
}
}
}
}
我不知道哪里出了问题。提前感谢那些谁会回复
1条答案
按热度按时间watbbzwu1#
在测试你的代码时,我收到了一些警告,涉及到从data.txt文件扫描数据,也没有看到代码实际存储年龄的位置。考虑到这一点,我对代码做了如下调整:
有些事项要指出。
通过这些调整并使用您的数据创建一个文本文件,在终端上查看了以下数据。
给予一下,看看它是否符合你的项目的精神。