Неполные имена файлов в dirent.h

Пришлось сделать какое-то устаревшее кодирование в Turbo C ++ для школьного проекта, когда я столкнулся с проблемой с использованием dirent.h

#include <dirent.h>
#include <stdio.h>
#include <iostream.h>

void ls(char *searchstring)
{
DIR *directory_list;
struct dirent *dentry;
directory_list = opendir (searchstring);
if (directory_list != NULL)
{
while ((dentry = readdir (directory_list)) != NULL)
{
cout << dentry->d_name << endl;
}
}
closedir (directory_list);
}

void main()
{
char searchstring[128];
gets(searchstring);
cout << "list of files under " << searchstring;
ls(searchstring);
}

Этот код должен в идеале перечислить все имена файлов и папок в каталоге.
Но я получаю это:

Но я понимаю
Кажется, что d_name Поле, похоже, не хранит имена файлов, длина которых превышает 9 символов (включая ноль), и вместо этого усекает их с помощью «~» и числа.

Я прочитал что-то о длине строки NAME_MAX для строки в структуре dirent, но больше нигде не могу найти информацию об этом в Интернете.

Вместо этого мне нужны полные имена файлов и папок, и извините, я обязательно использую древний Turbo C ++.

-4

Решение

Кажется, что поле d_name, кажется, не хранит имена файлов больше 9 символов (включая ноль), а вместо этого усекает его с помощью «~» и числа.

Да, именно так записи файловой системы Windows обрабатывают обратную совместимость для длинных имен файлов, которые появились в версиях Windows95 и выше.

Компилятор Turbo C ++ использует более старые стандарты, которые позволяли иметь имена файлов максимум с 8 символами, точка (.) и расширение до 3 символов.

Вместо этого мне нужны полные имена файлов и папок, и извините, я обязательно использую древний Turbo C ++.

Если вы привязаны к функциям, поддерживаемым Turbo C ++, нет никакого выхода, используя встроенные функции, поставляемые с компилятором.

Вы можете попытаться написать интерфейс файловой системы на низком уровне самостоятельно, но сомнительно, стоит ли это усилий.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector