Windows系统C语言获取文件夹来的所有文件名的方法

Windows系统C语言获取文件夹来的所有文件名的方法,代码如下:

#include <io.h>
#include <stdio.h>
#include <direct.h>
 
#define MAX_LEN 4096
 
int main(void)
{
    char root[] = "E:\\Workspace";
    struct _finddata_t file;
    intptr_t   hFile;
    char buf[MAX_LEN];

    if (_chdir(root))
    {
        printf("打开文件夹失败: %s\n", root);
        return 1;
    }

    hFile = _findfirst("*.c", &file);
    while (_findnext(hFile, &file) == 0)
    {
        sprintf_s(buf, MAX_LEN, "%s\\%s", root, file.name);
        printf("%s\n", buf);
    }

    return 0;
}

下面是网友提供的方案,仅供参考:

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
 
#define BUFSIZE 4096
#define LONG_DIR_NAME TEXT("c:\\longdirectoryname")
 
void _tmain(int argc, TCHAR *argv[])
{
    DWORD  retval=0;
    BOOL   success; 
    TCHAR  buffer[BUFSIZE]=TEXT(""); 
    TCHAR  buf[BUFSIZE]=TEXT(""); 
    TCHAR** lppPart={NULL};
 
   if( argc != 2 )
   {
      _tprintf(TEXT("Usage: %s [file]\n"), argv[0]);
      return;
   }
 
// Retrieve the full path name for a file. 
// The file does not need to exist.
 
    retval = GetFullPathName(argv[1],
                 BUFSIZE,
                 buffer,
                 lppPart);
     
    if (retval == 0) 
    {
        // Handle an error condition.
        printf ("GetFullPathName failed (%d)\n", GetLastError());
        return;
    }
    else 
    {
        _tprintf(TEXT("The full path name is:  %s\n"), buffer);
        if (lppPart != NULL && *lppPart != 0)
        {
            _tprintf(TEXT("The final component in the path name is:  %s\n"), *lppPart);
        }
    }
 
 
// Create a long directory name for use with the next two examples.
 
    success = CreateDirectory(LONG_DIR_NAME,
                              NULL);
 
    if (!success)
    {
        // Handle an error condition.
        printf ("CreateDirectory failed (%d)\n", GetLastError());
        return;
    }
 
 
// Retrieve the short path name.  
 
    retval = GetShortPathName(LONG_DIR_NAME,
                  buf,
                  BUFSIZE);
 
    if (retval == 0) 
    {
        // Handle an error condition.
         printf ("GetShortPathName failed (%d)\n", GetLastError());
         return;
    }
    else _tprintf(TEXT("The short name for %s is %s\n"), 
                  LONG_DIR_NAME, buf);
 
 
// Retrieve the long path name.  
 
    retval = GetLongPathName(buf,
              buffer,
              BUFSIZE);
 
    if (retval == 0) 
    {
        // Handle an error condition.
         printf ("GetLongPathName failed (%d)\n", GetLastError());
         return;
    }
    else _tprintf(TEXT("The long name for %s is %s\n"), buf, buffer);
 
// Clean up the directory.
 
    success = RemoveDirectory(LONG_DIR_NAME);
    if (!success)
    {
        // Handle an error condition.
        printf ("RemoveDirectory failed (%d)\n", GetLastError());
        return;
    }
}

 

    原文作者:ctrigger
    原文地址: https://blog.csdn.net/ctrigger/article/details/110288854
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞