[英]How do I check if file name is a directory or not in C?
我正在使用if(strstr(dir->d_name, ".") == NULL && strstr(dir->d_name, "..")
來檢查它是否是一個目錄/子目錄,但這仍然是打印出一些文件這不是目錄...我使用直接結構和DIR。
strstr
在另一個字符串中搜索子字符串,因此它將為包含單個(well或double)句點的每個名稱返回一個匹配項。
你可能打算使用strcmp
:
if (strcmp(dir->d_name, ".") && strcmp(dir->d_name, ".."))
.. not one of the default root folders ..
在此之前或之后,您可以檢查它是否是文件夾:
if (dir->d_type == DT_DIR)
..
或使用stat
。 (請注意,某些文件系統類型可能不支持d_type
。)
就個人而言,我喜歡stat()和fstat()。 然后使用類似S_ISDIR(m)的宏查看輸出的st_mode字段。
如果您使用的是Linux,則可以使用包含條目類型的getdents
。 否則,您可能必須使用stat
/ lstat
來獲取每個項目的類型信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.