【发布时间】:2017-10-25 23:45:43
【问题描述】:
我正在尝试计算输入到程序中的文件类型。因此,如果您输入 echo.c 它是一个 C 源代码,则 echo.h 是 Header 等等。但是如果你输入一个目录,比如echo/root,它应该算作directory类型,但现在它算作exe类型。我已经让其他一切正常工作,我只是想弄清楚如何使用stat() 来检查argv 是否是一个目录。
这是我目前所拥有的:
#include <sys/stat.h>
int main(int argc, char* argv[]){
int cCount = 0;
int cHeadCount = 0;
int dirCount = 0;
for(int i = 1; i < argc; i++){
FILE *fi = fopen(argv[i], "r");
if(!fi){
fprintf(stderr,"File not found: %s", argv[i]);
}
else{
struct stat directory;
//if .c extension > cCount++
//else if .h extension > cHeadCount++
else if( stat( argv[i], &directory ) == 0 ){
if( directory.st_mode & S_IFDIR ){
dirCount++;
}
}
}
//print values, exit
}
}
【问题讨论】:
-
显示你目前拥有的东西
-
man 2 stat你有什么不清楚的地方? -
你读过
man 2 stat吗? -
@JackVanier 我已经添加了我所拥有的