flex实现读取文件字符数

本文介绍了如何使用flex和bison来实现一个简单的字符计数程序。通过在DOS命令窗口中执行特定命令生成lex.yy.c文件并编译成output.exe。程序能够读取指定的文本文件,如test.txt,并统计其字符数。当在命令行中运行output.exe时,可以处理命令行参数,根据情况打开文件或将stdin作为输入。yylex()函数作为扫描程序的入口点,负责处理扫描和返回字符计数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下程序是flex与bison教程中的程序

%option noyywrap
%{
int chars=0;
int words=0;
int lines=0;
%}

%%
[a-zA-z]+ {words++; chars+=strlen(yytext);}
\n        {chars++; lines++;}
.         {chars++;}

%%
main(int argc,char **argv)
{
 if (argc>1)
 {
 if (!(yyin=fopen(argv[1],"r")))    //fopen()函数用于打开文件,“r”表示以只读方式开,//argv[1]  表示输入的文件名
 {
 perror(argv[1]);               //打不开文件argv[1],会输出提示错误信息No such file or directory
 return (1);                         //return 0  代表程序正常退出,return 1代表程序异常退出
 }
 }
 yylex();
 printf("%8d%8d%8d\n",lines,words,chars);
}

wc.l是程序文件名
在DOS命令窗口输入:
C:\Users\ASUS\Desktop\FBcode\wordcount>flex wc.l1.flex wc.l (生成lex.yy.c)
C:\Users\ASUS\Desktop\FBcode\wordcount>gcc -g -Wall -o output lex.yy.c (生成output.exe)
在wordcount文件夹下新建了text.txt文件,里面输入几行英文句子(注意最后一行要有回车键,不然会影响lines的输出结果)
运行:
C:\Users\ASUS\Desktop\FBcode\wordcount>output test.txt
扩展:
1.在命令行下输入 output.exe 就会打开output程序,这时参数个数argc为1,argv

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值