用system 调用 DOS DIR 命令就可以了:
system ( "dir sss_* /B > log.txt");
这就把 前缀为sss_的文件 文件名 存入 log.txt 文件了。
一个名字一行,没有别的东西。
你再 读出来。
#include
main()
{
FILE *fp;
char str[30][50]; // 假定文件数不超过30个
int i,n=0;
system("dir sss_* /B > log.txt");
fp=fopen("log.txt","r");
while(1){
if ( fgets(str[n],50,fp)==NULL) break;
str[n][strlen(str[n])-1]='\0'; // 加一个字符串结束符
n++;
}
fclose(fp);
for (i=0;i
}
在linux编译器下,可采用目录操作函数,读取当前目录下的文件
#include
#include//windows开发工具没有这个头文件
#include
#include
main()
{
DIR * dir;
struct dirent * ptr;
char file_list[100][40];
int i=0;
dir = opendir("/etc/rc.d"); //打开一个目录
while((ptr = readdir(dir)) != NULL) //循环读取目录数据
{
printf("d_name : %s\n", ptr->d_name); //输出文件名
strcpy(file_list[i],ptr->d_name ); //存储到数组
if ( ++i>=100 ) break;
}
closedir(dir);//关闭目录指针
}
在windows下,如VC也有类似的操作函数,如:
#include
#include
using namespace std;
#include
void main()
{
string szPath="d:/*.*";
WIN32_FIND_DATA wfd;
HANDLE hFind;
char file_list[100][40];
int i=0;
hFind = FindFirstFile(szPath.c_str(), &wfd) ;
do
{
cout << wfd.cFileName << endl ;
strcpy(file_list[i],wfd.cFileName ); //存储到数组
if ( ++i>=100 ) break;
}while (FindNextFile(hFind, &wfd));
FindClose(hFind);
}
把所有的文件名一个个提取出来
用字符串的startwith或是find函数来判断是不是以sss_开头,若是的话,就加到一个数组里
读取所有文件名 再刷选就ok了
符数组的程序 编译和构建都没