输出目录下所有文件名称,打开指定文件1.txt 查找 关键字"pripro:" 并输出后6位数据
时间: 2024-01-10 22:02:12 浏览: 78
可以使用C语言中的文件操作函数opendir()和readdir()遍历目录下的所有文件名称,并使用fopen()和fgets()函数打开指定文件并查找关键字。具体步骤如下:
1. 引入必要的头文件
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
```
2. 定义函数以输出目录下所有文件名称
```c
void listFiles(char *path) {
DIR *dir;
struct dirent *ent;
if ((dir = opendir(path)) != NULL) {
while ((ent = readdir(dir)) != NULL) {
if (ent->d_type == DT_REG) { // 判断是否为常规文件
printf("%s\n", ent->d_name);
}
}
closedir(dir);
} else {
perror("Failed to open directory");
exit(EXIT_FAILURE);
}
}
```
其中,path为目录路径。
3. 调用函数以输出目录下所有文件名称
```c
listFiles("path/to/directory");
```
4. 打开指定文件并查找关键字
```c
char *filename = "path/to/file/1.txt";
char *keyword = "pripro:";
char buffer[1024];
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
perror("Failed to open file");
exit(EXIT_FAILURE);
}
while (fgets(buffer, sizeof(buffer), fp)) {
if (strstr(buffer, keyword) != NULL) { // 判断是否包含关键字
printf("%s\n", buffer + strlen(buffer) - 7); // 输出后6位数据
}
}
fclose(fp);
```
其中,buffer为缓冲区,sizeof(buffer)为缓冲区大小。
完整代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
void listFiles(char *path) {
DIR *dir;
struct dirent *ent;
if ((dir = opendir(path)) != NULL) {
while ((ent = readdir(dir)) != NULL) {
if (ent->d_type == DT_REG) { // 判断是否为常规文件
printf("%s\n", ent->d_name);
}
}
closedir(dir);
} else {
perror("Failed to open directory");
exit(EXIT_FAILURE);
}
}
int main() {
listFiles("path/to/directory");
char *filename = "path/to/file/1.txt";
char *keyword = "pripro:";
char buffer[1024];
FILE *fp = fopen(filename, "r");
if (fp == NULL) {
perror("Failed to open file");
exit(EXIT_FAILURE);
}
while (fgets(buffer, sizeof(buffer), fp)) {
if (strstr(buffer, keyword) != NULL) { // 判断是否包含关键字
printf("%s\n", buffer + strlen(buffer) - 7); // 输出后6位数据
}
}
fclose(fp);
return 0;
}
```
阅读全文