У меня есть текстовый файл с именем, за которым следует число, которое является приоритетом имени, теперь я пытаюсь сортировать текстовый файл по приоритету и писать новый файл.Сортировка массива второй строкой
old
name1 1
name2 2
name3 3
name4 1
name5 1
name6 2
name7 1
name8 3
new
name 1 1
name4 1
name5 1
name2 2
name6 2
name3 3
name8 3
я достиг, чтобы получить старый текстовый файл в массиве, но я застрял с сортировкой этого массива по приоритету. Я не должен снова прокручивать файл, просто хочу отсортировать массив и записать новый отсортированный массив в новый текстовый файл. Как мне продолжить?
Код
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int p;
char *name;
}names;
int main(void){
FILE *old= fopen("old.txt", "r");
FILE *new = fopen("new.txt", "w");
char n[10];
int i =0;
names *name= malloc(sizeof(names));
for(i; i<count; i++){
int p;
char *n= malloc(sizeof(char) * 4);
fscanf(old, "%s %i", n, &p);
names[i].name= n;
names[i].p= p;
}
int j=0;
for(i=0; i < count;i++){
}
return 0;
}
Почему вы это делаете в C? –
Вы проделали хорошую работу. Вы протестировали его на куски, и у вас есть что-то, что решает часть головоломки. Следующий шаг - описать словами, как вы хотите сортировать данные. Являются ли элементы один и два отсортированными - да. Являются ли элементы два и три отсортированы да. Элементы 3 и отсортированы - нет. Затем сделайте то, что ... Итак, в словах описывайте, что вы хотите программировать дальше. Тогда поставьте это в вопросе и сделайте попытку сделать это. – dcaswell
'fscanf (eerste,"% s% f ", name, &prio);', будьте осторожны, 'prio' является' int', и вы сканируете 'float' –