Trích dẫn Gửi bởi huytohl
mình đang muốn lồng đoạn code sau để chương trình không những hiển thị các thư mục mà còn hiển thị tất cả các file trong thư mục ấy:
Mã:
#include <conio.h>
#include <windows.h>
#include <stdio.h>
 
void EnumerateFolders (const char* parent)
{
    WIN32_FIND_DATA fd;
    char folder[MAX_PATH];
    sprintf(folder, "%s\\*.*", parent);
 
    HANDLE hFind = FindFirstFile (folder, &fd);
 
    if (hFind != INVALID_HANDLE_VALUE)
    {
        do {
            if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
            {
                if (strcmp(fd.cFileName, ".") && strcmp(fd.cFileName, ".."))
                {
                    printf ("%s\\%s
", parent, fd.cFileName);
                    char child[MAX_PATH];
                    sprintf(child, "%s\\%s", parent, fd.cFileName);
                    EnumerateFolders (child);
                }              
            }
            else
            {
                printf("%s
", fd.cFileName);
            }
        } while (FindNextFile (hFind, &fd));
        FindClose (hFind);
    }
}
 
 
int main()
{
    EnumerateFolders("C:");
    getch();
}
nhưng không thành công, chương trình thậm chí không đọc file nữa [IMG]images/smilies/Cry.gif[/IMG]
bạn có thể hướng dẫn mình được không?
Khi build trong VC, nếu không cấu hình gì thêm thì đoạn mã sẽ build mặc định ở chế độ UNICODE. Do code của bạn chỉ hỗ trợ ANSI nên không hiển thị đúng. Bạn chỉnh lại Character Set là được. ( Dùng Multi-Byte character set)


Một cách khác, bạn có thể chỉ định kiểu ansi khi gọi hàm : FindFirstFileA, FindNextFileA , WIN32_FIND_DATAA ....
Hoặc sử dụng các kiểu dữ liệu Generic như TCHAR ..., dùng hàm gerneric _stprintf , ...