我需要找到一種方法來掃描文件夾 - (例如-C:\ Users \ User \ Documents \ HW),並檢查是否有一些文本我從用戶那裏得到。我需要返回哪些文件具有完全相同的文本。我以前從未使用過dirent.h,我不知道如何使用它。如何掃描一個文件夾中的文本使用dirent頭在C
-2
A
回答
0
你定義自己的error
函數處理錯誤:
// Standard error function
void fatal_error(const char* message) {
perror(message);
exit(1);
}
導線功能基本統計當前文件,如果該文件是目錄,我們將進入該目錄。在目錄本身中非常重要的是檢查當前目錄是否是。或..因爲這可能導致不定式循環。
void traverse(const char *pathName){
/* Fetching file info */
struct stat buffer;
if(stat(pathName, &buffer) == -1)
fatalError("Stat error\n");
/* Check if current file is regular, if it is regular, this is where you
will see if your files are identical. Figure out way to do this! I'm
leaving this part for you.
*/
/* However, If it is directory */
if((buffer.st_mode & S_IFMT) == S_IFDIR){
/* We are opening directory */
DIR *directory = opendir(pathName);
if(directory == NULL)
fatalError("Opening directory error\n");
/* Reading every entry from directory */
struct dirent *entry;
char *newPath = NULL;
while((entry = readdir(directory)) != NULL){
/* If file name is not . or .. */
if(strcmp(entry->d_name, ".") && strcmp(entry->d_name, "..")){
/* Reallocating space for new path */
char *tmp = realloc(newPath, strlen(pathName) + strlen(entry->d_name) + 2);
if(tmp == NULL)
fatalError("Realloc error\n");
newPath = tmp;
/* Creating new path as: old_path/file_name */
strcpy(newPath, pathName);
strcat(newPath, "/");
strcat(newPath, entry->d_name);
/* Recursive function call */
traverse(newPath);
}
}
/* Since we always reallocate space, this is one memory location, so we free that memory*/
free(newPath);
if(closedir(directory) == -1)
fatalError("Closing directory error\n");
}
}
你也可以做到這一點使用chdir()
功能,它也許更容易這樣,但我想告訴你這種方法,因爲它是非常ilustrating。但是最簡單的遍歷低谷文件夾/文件層次結構的方法是NFTW
函數。確保你在man
頁面檢查。
如果您還有其他問題,請隨時詢問。
+0
非常感謝你Aleksandar !!! –
相關問題
- 1. 如何在Java中掃描文件夾?
- 2. 如何在Java中掃描文件夾?
- 3. 掃描文件夾中的文件
- 4. 如何掃描整個主文件夾中的多個子文件夾?
- 5. PHP - 掃描目錄中的文件夾和文本文件
- 6. 使用Java掃描文本文件
- 7. 如何掃描文件夾和子文件夾中的所有文件?
- 8. 如何掃描原始文本文件?
- 9. 使用掃描儀掃描txt文件
- 10. 從文件中掃描C
- 11. struct dirent在頭文件中沒有de_type
- 12. 掃描一個文件
- 13. 掃描文件夾內的文本文件名稱HTML5/Javascript
- 14. 如何使用Fortify安全掃描軟件掃描JS文件
- 15. 掃描儀文本文件
- 16. Java掃描文本文件
- 17. 掃描文本文件
- 18. 掃描儀不會掃描一些字母文本文件
- 19. 掃描文件夾併爲每個文件夾創建書籍的腳本?
- 20. 使用sed掃描C++文件
- 21. 使用dirent通過html文件在c目錄中循環使用dirent
- 22. 使掃描儀讀取文本文件
- 23. 如何在SonarQube中掃描隱藏文件夾,例如「.nameFolder」?
- 24. 使用上下文:組件掃描掃描所有基本包
- 25. 文本框中的掃描值(使用掃描儀)
- 26. 要包含在Android中掃描.mp3文件的文件夾
- 27. 掃描儀只是一個文件VS掃描儀用的FileReader和文件
- 28. 如何使用掃描儀類來打印純文本文件?
- 29. 掃描文件夾中的文件夾,並獲取文件夾的第一個圖像
- 30. 的Java:如何使用掃描儀類讀取文本文件中的資源文件夾
想法是在目錄路徑上使用'opendir',然後用'readdir'循環查找所有文件,並且對於每個文件,您可能還必須「打開」,「讀取」和「關閉」。你也可以爲每個文件使用'fopen','fread'和'fclose'。一旦完成,你還應該調用'closedir'。 –
在向全世界尋求幫助之前,請自己做一些研究。謝謝。 – alk
謝謝Henrik!並猜測我嘗試了什麼,烷。並失敗。那麼「向世界求助」有什麼不對?這是一個問題和答案的網站! –