c语言读取自定义的文件路径,C语言实现遍历指定路径下的所有文件(Visual Studio 2015环境编写)...

1. main()函数部分:获取当前程序运行路径,将其整理传递给主要功能函数。

int main( int argc, char * argv[] )

{

byte pcFolderPath[CUR_PATH_MAX] = { '\0' };

uint32 u32Circle = 0;

uint32 u32FolderPathLen = 0; //当前程序运行的文件夹路径偏移

/* 遍历路径字符串,获取程序运行的路径(不包括程序名称) */

if ( argc < 1 )

{

printf( "argc参数错误!!!\n" );

system( "pause" );

return 0;

}

u32Circle = 0;

while (1)

{

if ( argv[0][u32Circle] == '\\' || argv[0][u32Circle] == '/' )

{

u32FolderPathLen = u32Circle;

u32FolderPathLen++;

}

else if ( argv[0][u32Circle] == '\0' ) //如果路径字符串到了终点

{

break;

}

u32Circle++;

}

memcpy( pcFolderPath, argv[0], u32FolderPathLen );

/* 打开用于记录结果的文件 */

g_pfWrite = fopen( "result.txt", "w" );

if ( g_pfWrite == NULL )

{

printf( "打开文件result.txt失败\n" );

return 0;

}

view( pcFolderPath, u32FolderPathLen );

fclose( g_pfWrite );

printf("程序结束!!!\n");

getchar();

return 0;

}

2.view()函数部分:实现指定路径下遍历所有文件,并将结果保存到文本文件中和显示到控制台窗口。

void view( byte *pcTmp, uint32 u32TmpLen )

{

struct _finddata_t stFileInfo;

long lHandle = 0;

byte pcPath[CUR_PATH_MAX] = { '\0' };

uint32 u32Len = 0;

byte cFileNameLen = 0;

memcpy( pcPath, pcTmp, u32TmpLen );

u32Len = u32TmpLen;

pcPath[u32Len++] = '*';

pcPath[u32Len++] = '.';

pcPath[u32Len++] = '*';

lHandle = (long)_findfirst( pcPath, &stFileInfo ); //找到第一个文件

if (lHandle == -1)

{

return ;

}

pcPath[--u32Len] = '\0';

pcPath[--u32Len] = '\0';

pcPath[--u32Len] = '\0';

do

{

/* 得到文件或文件夹的完整路径 */

cFileNameLen = 0;

while (1)

{

if (stFileInfo.name[cFileNameLen] == '\0')

{

break;

}

cFileNameLen++;

}

memcpy(pcPath + u32Len, stFileInfo.name, cFileNameLen);

pcPath[u32Len + cFileNameLen] = '\0';

/* 根据文件信息结构体的性质判断文件还是文件夹,文件夹的话就需要进一步分析,递归调用 */

if (stFileInfo.attrib & _A_SUBDIR) //是目录

{

if ( stFileInfo.name[0] == '.' && stFileInfo.name[1] == '\0' ) //当文件夹是“.”

{

continue;

}

if ( stFileInfo.name[0] == '.' && stFileInfo.name[1] == '.' && stFileInfo.name[2] == '\0' ) //当文件夹是“..”

{

continue;

}

pcPath[u32Len+cFileNameLen] = '\\';

view( pcPath, u32Len+cFileNameLen+1 );

}

else //是文件

{

fprintf(g_pfWrite, "%s", pcPath);

printf( "%s\n", pcPath );

}

} while (_findnext(lHandle, &stFileInfo) == 0);

_findclose(lHandle);

return;

}

3.外围定义和头文件包含等

#define _CRT_SECURE_NO_DEPRECATE

#define _CRT_SECURE_NO_WARNINGS

#include#include#include#include#include #include #include #include #include typedef unsigned char byte; //表示字符

typedef unsigned int uint32; //无符号32位整型

#define CUR_PATH_MAX 300

FILE *g_pfWrite = NULL;

byte pcFisrtName[50] = { '\0' }; //存放

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值