📌  相关文章
📜  Lex程序可将一个文件的内容复制到另一个文件

📅  最后修改于: 2021-06-28 06:48:30             🧑  作者: Mango

问题:给定一个文本文件作为输入,任务是将给定文件的内容复制到另一个文件。
解释:
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.