【发布时间】:2013-11-26 15:04:04
【问题描述】:
我必须将 bmp 文件名存储在一个数组中。
eg:当前目录下的文件
a.bmp b.bmp c.txt d.bmp xyz.exe ...
目前我的输出是:
fname[0]=.
fname[1]=..
fname[2]=a.bmp
fname[3]=b.bmp
fname[4]=c.txt
fname[5]=d.bmp
fname[6]=xyz.exe
想要的输出:
fname[0]=a.bmp
fname[1]=b.bmp
fname[2]=d.bmp
这是我的代码。
#include <stdio.h>
#include <dirent.h>
#include <string.h>
int main(int argc, char **argv)
{
char filename[20][256];
DIR *dir;
int i=0,k;
struct dirent *ent;
dir = opendir ("D:\\font\\");
if (dir != NULL)
{
/* print all the files and directories within directory */
while ((ent = readdir (dir)) != NULL)
{
strcpy(filename[i],ent->d_name);
i++;
/* save filenames in the array */
}
closedir (dir);
}
for (k=0;k<i;k++)
printf("%s\t %d\n",filename[k],k);
FILE *fp;
if(!(fp=fopen(filename[i],"rb")))
{
//file handling
}
fclose(fp);
return 0;
}
但是,此代码将当前目录的所有文件保存在数组中。有人可以帮我解决如何在数组中只存储 bmp 文件名吗?
【问题讨论】:
-
您必须为
.和..以及任何不以.bmp结尾的文件添加检查。 -
事实上,你最好改用
glob。