编写file_search.c实现指定路径下文件名中包含特定字符串(字符串自拟)的文件夹或者文件的搜索,要求能够统计文件名或者文件的数量
时间: 2024-05-01 09:18:07 浏览: 81
浅析Node.js查找字符串功能
好的,我明白了。对于你的问题,你可以使用以下代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
int search_file(const char *dir_name, const char *search_str, int *count) {
DIR *dir;
struct dirent *entry;
int found = 0;
if ((dir = opendir(dir_name)) == NULL) {
perror("opendir error");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_DIR) {
// Ignore "." and ".." directories
if (strcmp(entry->d_name, ".") == 0 || strcmp(entry->d_name, "..") == 0) {
continue;
}
// Recursively search directory
char subdir_name[500];
snprintf(subdir_name, sizeof(subdir_name), "%s/%s", dir_name, entry->d_name);
search_file(subdir_name, search_str, count);
} else {
// Check if filename contains search string
if (strstr(entry->d_name, search_str) != NULL) {
printf("%s/%s\n", dir_name, entry->d_name);
found = 1;
(*count)++;
}
}
}
closedir(dir);
return found;
}
int main(void) {
char dir_name[500], search_str[500];
int count = 0;
printf("Enter directory name: ");
fgets(dir_name, sizeof(dir_name), stdin);
dir_name[strlen(dir_name) - 1] = '\0';
printf("Enter search string: ");
fgets(search_str, sizeof(search_str), stdin);
search_str[strlen(search_str) - 1] = '\0';
printf("\nSearch results:\n");
int found = search_file(dir_name, search_str, &count);
printf("\nFound %d files with search string '%s' in %s.\n", count, search_str, dir_name);
return 0;
}
```
这段代码使用递归方式搜索指定目录下包含特定字符串的文件或文件夹。搜索结果会打印出来,并且统计找到的文件数。
你可以根据自己的需要修改代码中的字符串和输入方式。希望能对你有所帮助!
阅读全文