簡體   English   中英

如何在C中檢查文件名是否是目錄?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM