LINUX下C语言实现文件名检索

LINUX下C语言实现文件名检索,第1张

首先

DIR

*opendir(const

char

*filename)

struct

dirent

*readdir(DIR

*dirp)

利用这两个函数获取你目录下

while(

(psDirent=readdir(pdir))

!=

NULL

)

{

//readdir返回的是目录下的名称,然后判断一下当前这个名字是子目录还是文件

struct

stat

st

stat(

pcFileName,

&st

)

if(

S_ISDIR(st.st_mode)

)

continue;//是目录继续循环

else

filecount++;//是文件就加1

}

从循环出来后创建文件名为file(filecount+1)的文件。

这个只是简单思路。最后别忘closedir。因为你的需求里,并未涉及文件创建个数的上限以及如果删掉某个文件后的需求。

通常,如果你目录下文件个数固定似乎更好办一些。

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define FILE_NAME_MAX 50

#define SEPERATE_STRING_MAX 100

int StrCount(FILE *file,char *str)

int main()

{

char *filename,*spestr

FILE *fp

filename=(char *)malloc(FILE_NAME_MAX)

spestr=(char *)malloc(SEPERATE_STRING_MAX)

printf("Input the filename:")

while(1)

{

scanf("%s",filename)

fp=fopen(filename,"r")

if(fp!=NULL)

{

break

}

printf("Can't open the file.Try Again!")

}

printf("Input the special string:")

scanf("%s",spestr)

printf("%d times of %s in %s.",StrCount(fp,spestr),spestr,filename)

fclose(fp)

free(filename)

free(filename)

return 0

}

int StrCount(FILE *file,char *str)

{

int count=0

char ch

int p=0

while((ch=fgetc(file))!=EOF)

{

// 当前读入的字符匹配 str 相应位置的字符

if(ch == str[p])

{

// 匹配下一个字符

p++

// 如果已经匹配成功

if(str[p] == '\0')

{

count++

// 从头开始重新匹配

p = 0

}

}

// // 当前读入的字符不匹配 str 相应位置的字符

else

{


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8958648.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-23
下一篇 2023-04-23

发表评论

登录后才能评论

评论列表(0条)

保存