Сортировка списка файлов по имени, дате и размеру - C (СИ)

Формулировка задачи:

задан список файлов в папке, для каждого из которых указаны имя, расширение, размер, дата. реализовать сортировку по возрастанию и убыванию по всем характеристикам и подсчитать суммарный объём. заполнение верно?как применить qsort?и можно выводить структуру на экран?
#include<conio.h>
#include<stdlib.h>
#include<stdio.h>
 
struct str
{
    char name;
    char exp;
    float size;
    float date;
};
 
int main()
{
    struct str a[4];
    int i=0;
    float j=0;
    {
    for(i; i < 4; i++)
    printf("file #%i",i);
    printf("enter name");
    scanf("%c",&a[i].name);
    printf("enter expansion");
    scanf("%c",&a[i].exp);
    printf("enter size");
    scanf("%f",&a[i].size);
    printf("enter date");
    scanf("%f",&a[i].date);
    }
        {for(i=0, i < 4, i++)
            j=j+a[i].size
        }
        printf("common size %f",j);
Добавлено через 1 час 16 минут
{for(i=0, i < 4, i++)
      printf("%f%c",a[i]);
     }
так структуру выведет?

Код к задаче: «Сортировка списка файлов по имени, дате и размеру - C (СИ)»

textual
#include <stdlib.h>
#include <time.h>
#include <stdio.h>
#include <string.h>
 
#define STR_LEN 64
 
typedef struct str
{
        char name[STR_LEN];
        char exp[STR_LEN];
        unsigned long size;
        int tm_date;
} str_t;
 
int name_c(const void * a, const void * b){
    return strcmp(((str_t*)a)->name, ((str_t*)b)->name);
}
 
int exp_c(const void * a, const void * b){
    return strcmp(((str_t*)a)->exp, ((str_t*)b)->exp);
}
 
int size_c(const void * a, const void * b){
    return ((str_t*)a)->size - ((str_t*)b)->size;
}
 
int tm_date_c(const void * a, const void * b){
    return ((str_t*)a)->tm_date - ((str_t*)b)->tm_date;
}
 
void dump(const str_t * arr, size_t cnt){
    while ( cnt-- ){
        printf("%-20s%-5s%10u%10d\n", arr->name, arr->exp, arr->size, arr->tm_date);
        ++arr;
    }
}
 
#define NUM_FILES 4
 
int main(void)
{
    str_t a[NUM_FILES];
    int i;
        
    for(i=0; i < 4; i++){
                printf("file #%i\n", i+1);
                printf("enter name: ");
                scanf("%s", a[i].name);
                printf("enter expansion: ");
                scanf("%s", a[i].exp);
                printf("enter size: ");
                scanf("%lu", &a[i].size);
                printf("enter date: ");
                scanf("%i", &a[i].tm_date);
    }
 
 
    printf("\n Unsorted \n");
    dump(a, NUM_FILES);
    printf("\n Sorted by name: \n");
    qsort(a, NUM_FILES, sizeof(str_t), name_c);
    dump(a, NUM_FILES);
    printf("\n Sorted by expansion: \n");
    qsort(a, NUM_FILES, sizeof(str_t), exp_c);
    dump(a, NUM_FILES);
    printf("\n Sorted by size: \n");
    qsort(a, NUM_FILES, sizeof(str_t), size_c);
    dump(a, NUM_FILES);
    printf("\n Sorted by date: \n");
    qsort(a, NUM_FILES, sizeof(str_t), tm_date_c);
    dump(a, NUM_FILES);
    
    /* с этим сами как-нибудь                    printf("common size %f",j);
 
    а этого у меня нету getch(); */
    return 0;
}

6   голосов, оценка 4.167 из 5


СОХРАНИТЬ ССЫЛКУ