c语言循环遍历目录,C语言遍历文件和目录

c语言循环遍历目录,C语言遍历文件和目录

2023年7月3日发(作者:)

c语⾔循环遍历⽬录,C语⾔遍历⽂件和⽬录#include#include#include#include#include#include#include#define MAX_PATH_LENGTH512#define MAX_FILE_EXTENSION9unsigned long visit_dirs = 0;unsigned long visit_files = 0;void listdir(char *path){DIR *ptr_dir;struct dirent *dir_entry;int i = 0;char*child_path;char*file_path;child_path = (char*)malloc(sizeof(char)*MAX_PATH_LENGTH);if(child_path == NULL){printf("allocate memory for path failed.n");return;}memset(child_path, 0, sizeof(char)*MAX_PATH_LENGTH);file_path = (char*)malloc(sizeof(char)*MAX_PATH_LENGTH);if(file_path == NULL){printf("allocate memory for file path failed.n");free(child_path);child_path = NULL;return;}memset(file_path, 0, sizeof(char)*MAX_PATH_LENGTH);ptr_dir = opendir(path);while((dir_entry = readdir(ptr_dir)) != NULL){if(dir_entry->d_type & DT_DIR){if(strcmp(dir_entry->d_name,".") == 0 ||strcmp(dir_entry->d_name,"..") == 0){continue;}sprintf(child_path, "%s/%s", path, dir_entry->d_name);printf("[DIR]%sn", child_path);visit_dirs++;listdir(child_path);}if(dir_entry->d_type & DT_REG){sprintf(file_path, "%s/%s", path, dir_entry->d_name);printf("[FILE]%sn", file_path);visit_files++;}}free(child_path);child_path = NULL;free(file_path);file_path = NULL;}int main(int argc, char* argv[]){if(argc == 2){listdir(argv[1]);printf("Total DIR: %ld, Total FILE: %ldn", visit_dirs, visit_files);}else{printf("Usage: listdirreturn;}return 0;

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688381081a129439.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信