显示指定路径下所有文件的权限 硬链接数 时间 以及名字

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
void getFilePermission(mode_t mode)
{
	int i = 0;
	for(i=0;i<=8;i++ )
	{
		if((mode & (0400>>i))==0)
		{
			putchar('_');
			continue;
		}
		char arr[3]= "rwx";
		putchar(arr[i%3]);
	}
}
int main(int argc, const char *argv[])
{
	DIR *fp = opendir("../day3/");
	if(NULL == fp)
	{
		perror("opendir:");
		return -1;
	}
	struct dirent *fp1 =NULL;
	while(1)
	{
		fp1 = readdir(fp);
		if(fp1 == NULL)
		{
			if(errno == 0)
			{
				printf("目标文件录取成功\n");
				break;
			}
			else
			{
				perror("readdir:");
				return -1;
			}
		}
	
	struct stat buf;
	if(stat(fp1->d_name,&buf) <0)
	{
		perror("stat:");
		return -1;
	}

	printf("mode:%o\n",buf.st_mode);//文件类型和权限
	getFilePermission(buf.st_mode);
	printf("link:%ld\n",buf.st_nlink);//硬链接数
	printf("uid:%d gid:%d\n",buf.st_uid,buf.st_gid);//文件所属用户 组用户名
	printf("size:%ld\n",buf.st_size);//文件大小
	printf("time:%ld\n",buf.st_ctime);//时间
	printf("*************分割线*******\n");
	}
	return 0;
}

打印指定目录下的所有文件名,除了隐藏文件,输入编号,可以将编号对应的文件内容显示在终端上。

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(int argc, const char *argv[])
{
	DIR *fp = opendir("../day3/");
	if(NULL == fp)
	{
		perror("opendir:");
		return -1;
	}
	struct dirent *fp1 =NULL;
			int c = 0;
			char *arr[32];
	while(1)
	{
		fp1 = readdir(fp);
		if(fp1 == NULL)
		{
			if(errno == 0)
			{
				printf("目标文件录取成功\n");
				break;
			}
			else
			{
				perror("readdir:");
				return -1;
			}
		}
		if(fp1->d_name[0] == '.')
		{
			continue;
		}
		else
		{
			arr[c]=fp1->d_name;
			printf("[%d] %s\n",c,fp1->d_name);
			c++;
		}
	}
	printf("输入要打开的文件编号>>");
	scanf("%d",&c);

	int a = open(arr[c],O_RDONLY);
	if(a < 0)
	{
		perror("open:");
		return -1;
	}
	int res = 0;
	char arr1[32]= "";
	while(1)
	{
		res = read(a,arr1,sizeof(arr1));
		if(res == 0)
		{
			break;
		}
		write(1,arr1,res);
	}
	close(a);
	closedir(fp);
	return 0;
}

你可能感兴趣的:(c++,c语言,算法)