国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

Linux C判斷文件是否為目錄或者是普通文件

2019-11-14 09:35:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

主要函數(shù): stat(),opendir(),readdir(),

主要結(jié)構(gòu)體:struct dirent  和 struct stat

主要宏:S_ISDIR(),     S_ISREG()

函數(shù) stat()用于獲取一個(gè)文件路徑的信息,并把獲取到的信息放到結(jié)構(gòu)體 struct stat 中

函數(shù) opendir()用于生成一個(gè)目錄指針DIR

函數(shù)readdir()用于讀取目錄指針 DIR 中的信息,返回的值為一個(gè) struct dirent 結(jié)構(gòu)體

結(jié)構(gòu)體struct dirent 用于保存一個(gè)目錄的屬性。這里用到的只是該結(jié)構(gòu)體的 d_name 成員,用于保存目錄下的文件名

結(jié)構(gòu)體 struct stat 用于保存 一個(gè)文件路徑的信息

宏S_ISDIR()用于判斷一個(gè)文件路徑是不是一個(gè)目錄,是則返回1,否則返回0

宏S_ISREG()用于判斷一個(gè)文件路徑是不是一個(gè)普通文件,是則返回1,否則返回0

下面給出代碼:

#include <stdio.h>#include <dirent.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>int main(int argc, char const *argv[]){	char const*path = argv[1];	struct stat s_buf;	/*獲取文件信息,把信息放到s_buf中*/	stat(path,&s_buf);	/*判斷輸入的文件路徑是否目錄,若是目錄,則往下執(zhí)行,分析目錄下的文件*/	if(S_ISDIR(s_buf.st_mode))	{		PRintf("[%s] it is a dir/n",path);		struct dirent *filename;		DIR *dp = opendir(path);		/*readdir()必須循環(huán)調(diào)用,要讀完整個(gè)目錄的文件,readdir才會(huì)返回NULL		若未讀完,就讓他循環(huán)*/		while(filename = readdir(dp))		{			/*判斷一個(gè)文件是目錄還是一個(gè)普通文件*/			char file_path[200];			bzero(file_path,200);			strcat(file_path,path);			strcat(file_path,"/");			strcat(file_path,filename->d_name);						/*獲取文件信息,把信息放到s_buf中*/			stat(file_path,&s_buf);			/*判斷是否目錄*/			if(S_ISDIR(s_buf.st_mode))			{				printf("[%s] is a dir/n",file_path);			}			/*判斷是否為普通文件*/			if(S_ISREG(s_buf.st_mode))			{				printf("[%s] is a regular file/n",file_path);			}		}	}	/*若輸入的文件路徑是普通文件,則打印并退出程序*/	else if(S_ISREG(s_buf.st_mode))	{		printf("[%s] is a regular file/n",path);		return 0;	}	return 0;}


上一篇:1025

下一篇:Singleton 創(chuàng)建

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 八宿县| 东兴市| 漳州市| 公主岭市| 高碑店市| 武威市| 广州市| 绥芬河市| 西华县| 策勒县| 平安县| 望江县| 邻水| 焦作市| 星子县| 荥阳市| 江西省| 内丘县| 射洪县| 海宁市| 河北区| 无为县| 涟水县| 玉门市| 兴城市| 恩施市| 莒南县| 赤水市| 蕲春县| 奉化市| 长治县| 高尔夫| 金昌市| 盈江县| 沅江市| 遵义市| 越西县| 吴忠市| 江西省| 宁武县| 镇赉县|