在Windows平台下,可以使用C语言标准库中的dirent.h来遍历目录并获取文件名。不过,需要注意的是dirent.h主要用与linux系统,对于Windows,需要使用Windows API,如FindFirstFile、FindNextFile和FindClose,或者使用dirent.h的Windows版本。
windos做法参考上个文章,以下以linux下示例
C语言代码:
#include <stdio.h>
#include <dirent.h>
#include <string.h>
int main() {
DIR *d;
struct dirent *dir;
d = opendir("/home/test"); // 打开目录
if (d) {
while ((dir = readdir(d)) != NULL) { // 逐个读取目录项
// 检查文件后缀
if (strstr(dir->d_name, ".dat") || strstr(dir->d_name, ".len")) {
printf("%s\n", dir->d_name); // 打印文件名
}
}
closedir(d); // 关闭目录
}
return 0;
}
C++代码:
#include <iostream>
#include <string>
#include <dirent.h> // 包含目录操作的函数定义
using namespace std;
// 函数用于检查文件后缀
bool has_suffix(const string& s, const string& suffix) {
return (s.size() >= suffix.size()) && equal(suffix.rbegin(), suffix.rend(), s.rbegin());
}
int main() {
DIR *dir; // 目录指针
struct dirent *ent; // 目录项结构体指针
string dirPath = "/home/test"; // 目标目录
// 尝试打开目录
if ((dir = opendir(dirPath.c_str())) != NULL) {
// 逐项读取目录内容
while ((ent = readdir(dir)) != NULL) {
string fileName = ent->d_name;
// 检查文件后缀是否为.dat或.len
if (has_suffix(fileName, ".dat") || has_suffix(fileName, ".len")) {
cout << fileName << endl; // 打印符合条件的文件名
}
}
closedir(dir); // 关闭目录
} else {
// 无法打开目录
cerr << "Could not open directory" << endl;
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}