如何在词法分析器 FLEX 中将多个输出文件名作为命令行参数?

问题描述

我想将三个文件名作为词法分析器 FLEX 的命令行参数,其中三个用于输入文件,其余两个用于输出文件。取一个输入文件名和另一个输出文件名很容易,但我不知道如何在“yyout”中存储多个输出文件名。请帮我解决

FILE *fin=fopen(argv[1],"r");
FILE *output1 = fopen(argv[2],"w");
if(fin==NULL){
       printf("Cannot open specified file\n");
       return 0;
   }
   

yyin = fin;
yyout =output1;

一个输入文件一个输出文件是可以的,但是如果我想要这样的东西怎么办---

FILE *fin=fopen(argv[1],"w");
FILE *output2= fopen(argv[3],"w");
if(fin==NULL){
        printf("Cannot open specified file\n");
        return 0;
    }
    

yyin = fin;
yyout =output1;

如何在 yyout 中同时存储 output1 和 output2? 提前致谢。

解决方法

据我所知,不可能在 C 中同时写入两个文件。但是,另一种方法是在写入后复制第一个文件。

FILE *fin=fopen(argv[1],"r");
FILE *output1 = fopen(argv[2],"w");
FILE *output2= fopen(argv[3],"w");
if(fin==NULL){
        printf("Cannot open specified file\n");
        return 0;
    }
    
// call the lexer with the first output file
yyin = fin;
yyout =output1;
yylex();

// reopen output file for input
fclose(output1);
output1 = fopen(argv[2]),"r");

// copy to the second file
while ((ch = fgetc(output1)) != EOF)
    fputc(ch,output2);

C program to copy a file中提取,