int main(int argc, char **argv)
{
char *dirFilename = "/home/sv5071184/sample";
DIR *directory = NULL;
directory = opendir (dirFilename);
if(directory == NULL)
return -1;
struct dirent *dirp;
while ((dirp = readdir (directory)) != NULL) {
if( ! (strcmp (dirp->d_name ,".done") == 0) )
{
printf ("%s\n", dirp->d_name);
}
}
if(closedir(directory) < 0)
return -1;
}
注意:我已更新代码。使用此代码可以找到目录中的所有文件,而我只需要找到.done文件
答案 0 :(得分:0)
查找以特定字符串(扩展名)结尾的文件与文件名很常见。
无论好坏,在POSIX标准下,文件名不分为名称和扩展名,遗憾的是C字符串库没有像Java或C#中的endsWith那样的函数。
我认为您应该编写一个简单的实用函数ends_with(char*, char*)
来检查一个字符串是否以另一个字符串结尾并使用它来检查ends_with(ent->d_name, ".done")
。
希望这会有所帮助:)
答案 1 :(得分:0)
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
#include <dirent.h>
int main(int argc, char **argv)
{
char *dirFilename = "/home/sv5071184/sample";
DIR *directory = NULL;
directory = opendir (dirFilename);
if(directory == NULL)
return -1;
struct dirent *dirp;
while ((dirp = readdir (directory)) != NULL) {
if ( strstr(dirp->d_name , ".done" ))
{
printf( "found a .done file: %s\n", dirp->d_name );
}
}
if(closedir(directory) < 0)
return -1;
}
我使用过这种方式,它正在运作..谢谢大家