获取目录中所有含有特定后缀名的文件

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <sys/types.h>
#include <string.h>

#ifndef oj_dir
#define oj_dir "/home/rain/oj"
#endif

//取出目录中.in文件
//参数中,dir是要查询的目录,in_files数组保存每个.in文件,函数返回所有.in文件个数
int printdir(char *dir, char* in_files[])
{
	DIR *dp;
	struct dirent *entry;

	if ((dp = opendir(dir)) == NULL)
	{
		fprintf(stderr, "cannot open directory: %s\n", dir);
		return 0;
	}
	chdir(dir);
	int in_file_num = 0;
	char dir_prefix[20], dir_suffix[20];
	while((entry = readdir(dp)) != NULL)
	{
		/* ignore . and .. ,分别代表当前目录和上一级目录*/
		if (strcmp(".", entry->d_name) == 0 ||  strcmp("..", entry->d_name) == 0)
		{
			continue;
		}
		sscanf(entry->d_name, "%[^.].%[^.]", dir_prefix, dir_suffix);
		if (strcmp("in", dir_suffix) == 0)
		{
			in_files[in_file_num ++] = entry->d_name;
		}		
	}
	chdir(oj_dir);
	closedir(dp);
	return in_file_num;
}

int main(int argc, char const *argv[])
{	
	char* in_files[10];
	int in_file_nums = printdir("/home/rain/data/1001", in_files);
	printf("%d\n", in_file_nums);
	int i;
	for (i = 0; i < in_file_nums; ++i)
	{
		printf("%s\n", in_files[i]);
	}
	return 0;
}

目录如下:


rain@HY:~/oj$ gcc get_file_with_same_suffix.c -o get_file_with_same_suffix

rain@HY:~/oj$ ./get_file_with_same_suffix

4
data.in
data3.in
data4.in
data2.in


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明 YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明YOLO高分设计资源源码,详情请查看资源内容使用说明

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值