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



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

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

yyin = fin;
yyout =output1;

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

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 filen");
return 0;
}

yyin = fin;
yyout =output1;

如何将output1和output2存储在yout中?提前谢谢。

据我所知,在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 filen");
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程序中提取以复制文件,

最新更新