如何在flex中将输出放入不同的文本文件

如何在flex中将输出放入不同的文本文件

我编写了一个简单的程序来检查文本文件中的单词是动词还是不使用 Flex。但我想将输出放入(打印)到不同的文本文件中。
是否可以?我该怎么做?

我的示例代码是:

%%

[\t]+

is   |

am   |

are  |

was  |

were {printf("%s: is a verb",yytext);}

[a-zA-Z]+ {printf("%s: is a verb",yytext);}

. |\n

%%

int main(int argc, char *argv[]){    
    yyin = fopen(argv[1], "r");    
    yylex();         
    fclose(yyin);
}

答案1

lex我对/ 的了解还不够flex,但是,考虑到我在问题中看到的代码,我尝试将此代码添加到main()

FILE * myfd = fopen(argv[2], "w");

并使用fprintf()代替printf(),如:

{ fprintf(myfd, "%s: is a verb", yytext); }

我用作argv[2]文件名的源,这意味着您必须将其作为程序调用中的第二个参数提供,但您也可以使用文件名对字符串进行硬编码。

答案2

您可以让脚本将结果打印到标准输出(正常终端输出),然后将其重定向到一个文件>-操作员:

假设您的脚本是文件/home/USERNAME/bin/isVerb,并且您想要检查“拖延”一词,您可以像这样运行它:

/home/USERNAME/bin/isVerb procrastinate > /home/USERNMAE/Documents/isVerb-procrastinate.txt

该命令将创建该文件/home/USERNMAE/Documents/isVerb-procrastinate.txt或替换它(如果它已存在)并将输出保存到其中。
如果您希望该命令将输出附加到文件中(如果它已经存在,否则创建它),您可以使用>>代替>

相关内容