优化后如下:
找到/root/filefind下所有含有xfile的文件
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <dirent.h>
#include <string.h>
#include <fcntl.h>
#include <sys/stat.h>
int is_in(char *s, char *c);
int main(int argc, char *argv[])
{
char prefix[] = "xfile";
char filepath[] = "/root/filefind/";
char filename[50] = {0};
DIR *directory_pointer;
struct dirent *entry;
if((directory_pointer=opendir(filepath))==NULL){
printf("Error opening \n");
}else{
while((entry=readdir(directory_pointer))!=NULL)
{
memset(filename,0,50*sizeof(char));
if(is_in(entry->d_name,prefix)==1){
strcat(filename, filepath);
strcat(filename, entry->d_name);
printf("%s\n",filename);
}
}
closedir(directory_pointer);
}
return 0;
}
int is_in(char *s, char *c)
{
int i=0,j=0,flag=-1;
while(i<strlen(s) && j<strlen(c)){
if(s[i] == c[j]){
i++;
j++;
}else{
i=i-j+1;
j=0;
}
if(j==strlen(c)){
flag=1;
break;
}
}
return flag;
}
使用过程: