C语言遍历windows目录文件 并对文件进行读写操作

遍历windows目录 需要引用windows API 实际的遍历代码只需要5行

#include<io.h>
#include<windows.h>
int main()
{
    WIN32_FIND_DATA p;
    HANDLE h = FindFirstFile("/*文件夹路径*/", &p);
    //文件夹路径可以写成 C:\windows\tmp\   (字串内要双斜线)
    //也可写成C:\windows\tmp\*.dat    (检索所有.dat文件)
    //或者C:\windows\tmp\abc*  (检索abc开头的文件)
    do
    {
        puts(p.cFileName);//输出文件名称
        //输出的名称前两个 分别是“.”和“..” 代表当前目录和上一目录可以略过
        //得到文件的名称之后 就可以和前面的路径拼合组成文件的绝对路径
        //然后使用fopen对文件进行读写操作
    }while(FindNextFile(h,&p))
}
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
遍历C语言中的函数并将它们提取到文本文件中,您可以使用以下步骤: 1. 打开C源代码文件读取其内容。 2. 使用正则表达式或其他字符串处理技术,找到函数定义的行。可以使用以下正则表达式来查找函数定义: ``` ^\s*(static\s+)?[a-zA-Z_*]+\s+[a-zA-Z_]+\s*\([^)]*\)\s*\{ ``` 这个正则表达式可以匹配以零个或多个空格开头的函数定义行。函数定义以返回类型和函数名开始,后跟括号中的参数列表,并以左大括号结束。 3. 从每个匹配的行中提取函数名称,并将其添加到文本文件中。您可以使用以下正则表达式来提取函数名称: ``` [a-zA-Z_]+\s*\( ``` 这个正则表达式可以匹配以字母或下划线开始的函数名称,后跟零个或多个空格和左括号。 4. 关闭源代码文件和文本文件。 下面是一个使用C语言编写的示例程序,用于实现上述步骤: ``` #include <stdio.h> #include <stdlib.h> #include <string.h> #include <regex.h> #define MAX_LINE_LENGTH 1024 int main(int argc, char *argv[]) { char *input_file_path, *output_file_path; FILE *input_file, *output_file; char line[MAX_LINE_LENGTH]; regex_t regex; regmatch_t matches[1]; int ret; if (argc < 3) { printf("Usage: %s input_file output_file\n", argv[0]); exit(EXIT_FAILURE); } input_file_path = argv[1]; output_file_path = argv[2]; input_file = fopen(input_file_path, "r"); if (input_file == NULL) { printf("Failed to open input file: %s\n", input_file_path); exit(EXIT_FAILURE); } output_file = fopen(output_file_path, "w"); if (output_file == NULL) { printf("Failed to open output file: %s\n", output_file_path); exit(EXIT_FAILURE); } ret = regcomp(&regex, "^\\s*(static\\s+)?[a-zA-Z_*]+\\s+[a-zA-Z_]+\\s*\\([^)]*\\)\\s*\\{", REG_EXTENDED); if (ret != 0) { printf("Failed to compile regex\n"); exit(EXIT_FAILURE); } while (fgets(line, MAX_LINE_LENGTH, input_file) != NULL) { ret = regexec(&regex, line, 1, matches, 0); if (ret == 0) { char *function_name = strstr(line, "("); if (function_name != NULL) { function_name[0] = '\0'; fprintf(output_file, "%s\n", &line[matches[0].rm_so]); } } } regfree(&regex); fclose(input_file); fclose(output_file); return 0; } ``` 这个程序将从命令行参数中读取输入和输出文件的路径,并将函数名称写入输出文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值