c语言在windows平台如何读取当前目录下的所有txt文件
时间: 2024-02-10 12:10:43 浏览: 91
c语言读取txt文件数据
在Windows平台上,与Linux平台上读取目录下文件列表的方法不同,可以使用Windows API中的`FindFirstFile`和`FindNextFile`函数实现。具体步骤如下:
1. 使用`FindFirstFile`函数查找当前目录下的第一个文件,返回一个指向`WIN32_FIND_DATA`结构体的句柄。
2. 使用`FindNextFile`函数继续查找下一个文件,直到所有文件都被查找完毕。
3. 对于每个找到的文件,判断其文件名是否以".txt"结尾,如果是则打开文件,读取其中的内容。
4. 使用`FindClose`函数关闭文件查找句柄。
下面是一个示例代码,可以列出当前目录下所有的txt文件并打印文件内容:
```c
#include <stdio.h>
#include <windows.h>
int main() {
HANDLE hFind;
WIN32_FIND_DATA findData;
char *filename;
char line[1024];
FILE *fp;
if ((hFind = FindFirstFile(".\\*", &findData)) == INVALID_HANDLE_VALUE) {
printf("can't open %s", ".");
return 0;
}
do {
filename = findData.cFileName;
if (findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
continue;
}
if (strlen(filename) >= 4 && strcmp(filename + strlen(filename) - 4, ".txt") == 0) {
fp = fopen(filename, "r");
if (fp == NULL) {
printf("can't open %s", filename);
continue;
}
printf("%s:\n", filename);
while (fgets(line, 1024, fp) != NULL) {
printf("%s", line);
}
fclose(fp);
}
} while (FindNextFile(hFind, &findData));
FindClose(hFind);
return 0;
}
```
需要注意的是,该示例代码中对于文件读取的部分比较简单,没有进行错误处理,实际使用中需要根据需求进行适当的修改和完善。
阅读全文