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番目のパラメータとしてこれを指定する必要がありますが、ファイル名を含む文字列をハードコードすることもできます。
答え2
スクリプトに結果を印刷させることができます。標準出力(通常のターミナル出力)次にファイルにリダイレクトします。>
-オペレーター:
スクリプトがファイルであり、/home/USERNAME/bin/isVerb
「procrastination」という単語を確認したいと仮定すると、次のように実行できます。
/home/USERNAME/bin/isVerb procrastinate > /home/USERNMAE/Documents/isVerb-procrastinate.txt
このコマンドは、ファイルを作成する/home/USERNMAE/Documents/isVerb-procrastinate.txt
か、すでに存在する場合はファイルを置き換え、出力をそのファイルに保存します。
コマンドが出力をファイルに追加できるようにするには(すでに存在する場合はファイルを生成します)、次を使用できます。>>
変える>
。