slip6&slip20
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
typedef struct {
char* filename;
off_t size;
} FileEntry;
int compareFileSize(const void* a, const void* b) {
FileEntry* fileA = (FileEntry*)a;
FileEntry* fileB = (FileEntry*)b;
return fileA->size - fileB->size;
}
int main(int argc, char* argv[]) {
if (argc < 2) {
printf("Usage: %s <file1> <file2> <file3> ...\n", argv[0]);
return 1;
}
FileEntry* files = (FileEntry*)malloc((argc - 1) * sizeof(FileEntry));
if (files == NULL) {
perror("Error allocating memory");
return 1;
}
for (int i = 1; i < argc; i++) {
struct stat fileStat;
if (stat(argv[i], &fileStat) == -1) {
fprintf(stderr, "Error getting file information: %s\n", argv[i]);
continue;
}
files[i - 1].filename = argv[i];
files[i - 1].size = fileStat.st_size;
}
qsort(files, argc - 1, sizeof(FileEntry), compareFileSize);
printf("Filenames in ascending order of sizes:\n");
for (int i = 0; i < argc - 1; i++) {
printf("%s\n", files[i].filename);
}
free(files);
return 0;
}