Я начинаю на C и учась, когда я прогрессирую. Я принял и изменил программу для печати имен файлов в каталоге в отсортированном порядке. Я только хотел бы напечатать первый и последний файл в отсортированном порядке. (например: c.txt, z.docx, f.jpg, a.docx: Выход будет a.docx и z.docx)Улучшение печати Имя и фамилия отсортированного каталога
Directory Size: Почти 2000000 Файлы
Размер файла: Каждый размер на большинство 2MB
Препятствия
Первое название печатает как "." и второе имя «..»
Сортировка осуществляется через верхний регистр, как переключиться на нижний регистр
Было бы здорово знать, если есть более простой и более эффективный способ выполнения кода ниже.
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
int
main(void)
{
struct dirent **namelist;
int n;
int i = 0;
n = scandir(".", &namelist, NULL, alphasort);
if (n < 0)
{
perror("scandir");
}
else
{
while (i<n)
{
if (i == 0) // First Name
{
printf("%s\n", (namelist[i])->d_name);
}
if (i == n-1) // Last Name
{
printf("%s\n", (namelist[i])->d_name);
}
free(namelist[n]);
i++;
}
free(namelist);
}
}
Вы можете напечатать первый и последний перед циклом while(), и упростить цикл только до 'free()' memory. Вы должны также проверить, есть ли более 1 файла перед печатью последней записи. –