Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Найти все файлы на диске

4.1K
14 ноября 2006 года
GRIENDERS
117 / / 06.06.2006
Есть значит вот такой код
Код:
#include "stdafx.h"
void FindAll(char []);
void main()
{
    FindAll("c:\\tasm\\*");
getch();   
}

void FindAll(char dir [])
{
    WIN32_FIND_DATA fd;
    char dir1 [255];
    memset((void*)dir1,0,sizeof(dir1));

    HANDLE hf = FindFirstFile(dir,&fd);
    if (hf!= INVALID_HANDLE_VALUE)
    do{
           
        if ((fd.cFileName==".") || (fd.cFileName=="..")) continue;// это почему то не работает

        if ((fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==FILE_ATTRIBUTE_DIRECTORY)
        {          // если это каталог то удаляем * в конце и рекурсивно вызываем себя же
            memcpy(dir1,dir,(sizeof(dir)-1));
            strcat(dir1,fd.cFileName);
            strcat(dir1,"\\*");
            FindAll(fd.cFileName);
        }

        else cout<<"File is " <<fd.cFileName <<"\n";

    }while (FindNextFile(hf,&fd));
    FindClose(hf);
}

Подскажите как надо сделать чтобы заработало
18K
14 ноября 2006 года
casey
11 / / 18.07.2006
if ((fd.cFileName==".") || (fd.cFileName=="..")) continue;// это почему то не работает

Так не будет работать - дело в том, что cFileName - указатель. То есть ты сравниваешь значение указателя cFileName и указателя, указывающего на ".";
Попробуй вместо этого
if (!strcmp(FindFileData.cFileName,"..") || !strcmp(FindFileData.cFileName,"."))
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог