问题:给定一个文本文件作为输入,任务是将给定文件的内容复制到另一个文件。
解释:
Lex是一个生成词法分析器的计算机程序,由Mike Lesk和Eric Schmidt编写。 Lex读取指定词法分析器的输入流,并输出以C编程语言实现词法分析器的源代码。
方法:
众所周知, yytext保留了与当前标记匹配的文本。将yytext的值附加到临时字符串。如果一个字符(“\ n”)遇到,写入临时字符串到目标文件中的内容。
输入文件: input.txt
GeeksForGeeks: A Computer Science portal for geeks.
下面是上述方法的实现:
C
/* LEX code to replace a word with another
taking input from file */
/* Definition section */
/* character array line can be
accessed inside rule section and main() */
%{
#include
#include
char line[100];
%}
/* Rule Section */
/* Rule 1 writes the string stored in line
character array to file output.txt */
/* Rule 2 copies the matched token
i.e every character except newline character
to line character array */
%%
['\n'] { fprintf(yyout,"%s\n",line);}
(.*) { strcpy(line,yytext); line[0] = '\0'; }
<> { fprintf(yyout,"%s",line); return 0;}
%%
int yywrap()
{
return 1;
}
/* code section */
int main()
{
extern FILE *yyin, *yyout;
/* open the source file
in read mode */
yyin=fopen("input.txt","r");
/* open the output file
in write mode */
yyout=fopen("output.txt","w");
yylex();
}
输出:
输出文件: output.txt
GeeksForGeeks: A Computer Science portal for geeks.