求一个windows下的纯C语言实现的文件夹遍历程序,要可以遍历子文件夹,不要unix下的和C++的。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求一个windows下的纯C语言实现的文件夹遍历程序,要可以遍历子文件夹,不要unix下的和C++的。相关的知识,希望对你有一定的参考价值。
// 这是我以前写的一个,你参考参考 要用到windows API 函数#include <windows.h>
#include <stdio.h>
#include <string.h>
#define LEN 1024
// 深度优先递归遍历目录中所有的文件
BOOL DirectoryList(LPCSTR Path)
WIN32_FIND_DATA FindData;
HANDLE hError;
int FileCount = 0;
char FilePathName[LEN];
// 构造路径
char FullPathName[LEN];
strcpy(FilePathName, Path);
strcat(FilePathName, "\\*.*");
hError = FindFirstFile(FilePathName, &FindData);
if (hError == INVALID_HANDLE_VALUE)
printf("搜索失败!");
return 0;
while (::FindNextFile(hError, &FindData))
// 过虑.和..
if (strcmp(FindData.cFileName, ".") == 0
|| strcmp(FindData.cFileName, "..") == 0 )
continue;
// 构造完整路径
wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
FileCount++;
// 输出本级的文件
printf("\n%d %s ", FileCount, FullPathName);
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
printf("<Dir>");
DirectoryList(FullPathName);
return 0;
void main()
DirectoryList("G:");
参考技术A 伪代码:
void function(LPCTSTR lpszPath)
开始查找;
if (没有找到文件)
return;
do
if (找到的文件是目录)
function(找到的目录);
else
对文件进行操作;
while (查找下一个文件并成功);
实现这个算法所需要用到的API函数有:
·FindFirstFile;
·FindNextFile;
具体函数的用法 查看下msdn吧 或者google一下 参考技术B 我只能告诉你原理,你可以自己查相关的函数套用.!~!~!@@@
你先要切换到当前目录,就是你要遍历的地方.
这种方法是用递归,如果是文件,一直找下去.直到没有文件.这里也需要函数去判断这个文件是文件夹还是程序. 参考技术C 哥们 unix环境编程 也就是APUE里面有源代码 你可以照着改改
C语言怎么实现截图
能实现么 求具体思路
1、用C语言实现windows程序截图,太麻烦。建议用C++做比较好。
2、截图例程:
#define CAPTUREBLT 0x40000000
#endif
HBITMAP CaptureScreen(LPRECT lpRect)//lpRect为NULL时表示全屏幕截图
HDC hdc, hdcMem ;
HBITMAP hemfCopy ;
HWND hwndScr ;
int dstcx, dstcy ;
if(lpRect)
dstcx = lpRect->right - lpRect->left ;
dstcy = lpRect->bottom - lpRect->top ;
else
dstcx = GetSystemMetrics(SM_CXSCREEN) ;
dstcy = GetSystemMetrics(SM_CYSCREEN) ;
if (LockWindowUpdate(hwndScr = GetDesktopWindow ()))
hdc = GetDCEx (hwndScr, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE) ;
hdcMem = CreateCompatibleDC (hdc) ;
if(NULL==hdcMem)
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return NULL;
hemfCopy = CreateCompatibleBitmap (hdc, abs(dstcx), abs(dstcy)) ;
if(NULL==hemfCopy)
DeleteDC (hdcMem) ;
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return NULL;
SelectObject (hdcMem, hemfCopy) ;
if(lpRect)
StretchBlt (hdcMem, 0, 0, abs(dstcx), abs(dstcy),
hdc, lpRect->left, lpRect->top, dstcx, dstcy, SRCCOPY|CAPTUREBLT) ;
else
BitBlt (hdcMem, 0, 0, dstcx, dstcy,
hdc, 0, 0, SRCCOPY|CAPTUREBLT) ;
DeleteDC (hdcMem) ;
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return hemfCopy;
return NULL;
参考技术A
// MSDN 一下,GDI接口,GetSystemMetrics
#ifndef CAPTUREBLT
#define CAPTUREBLT 0x40000000
#endif
HBITMAP CaptureScreen(LPRECT lpRect)//lpRect为NULL时表示全屏幕截图
HDC hdc, hdcMem ;
HBITMAP hemfCopy ;
HWND hwndScr ;
int dstcx, dstcy ;
if(lpRect)
dstcx = lpRect->right - lpRect->left ;
dstcy = lpRect->bottom - lpRect->top ;
else
dstcx = GetSystemMetrics(SM_CXSCREEN) ;
dstcy = GetSystemMetrics(SM_CYSCREEN) ;
if (LockWindowUpdate(hwndScr = GetDesktopWindow ()))
hdc = GetDCEx (hwndScr, NULL, DCX_CACHE | DCX_LOCKWINDOWUPDATE) ;
hdcMem = CreateCompatibleDC (hdc) ;
if(NULL==hdcMem)
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return NULL;
hemfCopy = CreateCompatibleBitmap (hdc, abs(dstcx), abs(dstcy)) ;
if(NULL==hemfCopy)
DeleteDC (hdcMem) ;
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return NULL;
SelectObject (hdcMem, hemfCopy) ;
if(lpRect)
StretchBlt (hdcMem, 0, 0, abs(dstcx), abs(dstcy),
hdc, lpRect->left, lpRect->top, dstcx, dstcy, SRCCOPY|CAPTUREBLT) ;
else
BitBlt (hdcMem, 0, 0, dstcx, dstcy,
hdc, 0, 0, SRCCOPY|CAPTUREBLT) ;
DeleteDC (hdcMem) ;
ReleaseDC (hwndScr, hdc) ;
LockWindowUpdate (NULL) ;
return hemfCopy;
return NULL;
本回答被提问者和网友采纳以上是关于求一个windows下的纯C语言实现的文件夹遍历程序,要可以遍历子文件夹,不要unix下的和C++的。的主要内容,如果未能解决你的问题,请参考以下文章
求一个可以linux虚拟机下可用的纯C语言编写的电子相册,有浏览,预览图片和背景音乐功能