亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

想了解一下,在C/C++中的readdir遍歷目錄中的子目錄的問題?

想了解一下,在C/C++中的readdir遍歷目錄中的子目錄的問題?

哆啦的時光機 2021-06-22 18:14:24
void listDir(char *dirpath){DIR *dir = opendir((const char*)dirpath);if(dir == NULL){printf("open the log directory <%s> failure\n",dirpath);return ;}struct dirent *dirp = NULL;while((dirp = readdir(dir)) != NULL){if(dirp->d_type & DT_DIR){printf("dirpath = %s\n",dirpath);if(dirp->d_name == NULL || dirp->d_name[0] == '.' || strcmp(dirp->d_name,"..") == 0)continue;sprintf(m_chTempPath,"%s%s/",dirpath,dirp->d_name);listDir(m_chTempPath);}else if(dirp->d_type & DT_REG){sprintf(m_chTemp,"%s%s",m_chTempPath,dirp->d_name);printf("m_chTemp = %s\n",m_chTemp);} elsecontinue;}closedir(dir);}代碼如上,目錄結構如下:/root/shanghai/jingan/xiaoming.txt /root/nanjing/xuanwu/tom.txt/root/shanghai/changning/xiaohong.txt /root/nanjing/hexi/jack.txt/root/shanghai/putuoxiaoli.txt /root/nanjing/baixia/may.txt當我執行程序時,讀目錄結構會出錯,比如會讀成 /root/shanghai/jingan/changning,而jingan和changning是并列的兩個目錄,這種錯誤該怎么改,急等大大們在線幫解決
查看完整描述

2 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

這個要正對不同的操作系統,不同的操作系統,文件節點的存放方式不一樣,讀取的方式就不一樣了。
可以利用for循環,像Linux dir=opendir (dirname)打開文件夾,返回目錄指針,dp=readdir(dir)利用讀目錄,返回一行行讀取目錄的文件結構體指針,指針中存的有文件屬性,是文件,還是文件夾。
通過判斷是文件或者文件夾:
如果是文件,就就輸出文件名dp->name
否則,就是一個文件夾 繼續dir1=opendir(dp->name),dp1=readdir(dir1)..
一直循環到判斷不到目錄了。
windows應該也有類似的函數吧,這個我就么有用過了,你找找。

查看完整回答
反對 回復 2021-06-27
?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊


           else if(dirp->d_type & DT_REG)           {                sprintf(m_chTemp,"%s%s",dirpath,dirp->d_name); //----                printf("m_chTemp = %s\n",m_chTemp);           }


查看完整回答
反對 回復 2021-06-27
  • 2 回答
  • 0 關注
  • 388 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號