19.07.2006, 12:21
общий
это ответ
Здравствуйте, psevdo!
Каталоги, файлы, метки томов и пр. объекты файловой системы различается по атрибутам:
Для DOS - "FA_*"
Для того, чтобы найти файлы, включая каталоги, необходимо в findfirst() последним параметром задать атрибуты поиска. Ловите код, который ищет файлы, а также каталоги и метки тома, помечая каталоги знаком "", а метки - знаком "\" перед выводом имени (см. приложение). Там же, в этом же коде я привёл (в комментариях) список остальных возможных атрибутов поиска.
В случае, когда нужно найти ВСЁ, необязательно утруждать себя перечислением _всех_ констант, достаточно ввести значение 0xFFFF...:)
Приложение:
#include <stdio.h>#include <conio.h>#include <dir.h>#include <dos.h>/*File attributes: Constant │ Description═══════════╪═════════════════════ FA_RDONLY │ Read-only attribute FA_HIDDEN │ Hidden file FA_SYSTEM │ System file FA_LABEL │ Volume label FA_DIREC │ Directory FA_ARCH │ Archive*/void main(void){struct ffblk ffblk; clrscr(); int done; done=findfirst("*.*", &ffblk, FA_DIREC + FA_LABEL); while(!done) { if (ffblk.ff_attrib == FA_DIREC) printf("\"); if (ffblk.ff_attrib == FA_LABEL) printf("\\\"); printf("%s\n",&ffblk.ff_name); done=findnext(&ffblk); }}