1
我写了一个简单的lex程序来执行正数的平均值,程序编译正常,但我无法获得预期的输出。我将输入传递给程序文件通过给文件名作为命令行参数。lex程序的输出是空的,显示没有结果,我是lex的初学者,任何帮助将不胜感激。我附上了下面的代码。该代码是用redhat linux内核版本2.4编写的。来自lex程序的意外输出
%{
#include <stdio.h>
#include <stdlib.h>
%}
%%
[0-9]+ return atoi(yytext);
%%
void main()
{
int val, total = 0, n = 0;
while ((val = yylex()) > 0) {
total += val;
n++;
}
if (n > 0) printf(“ave = %d\n”, total/n);
}
输入文件包含数字3,6和4,文件的名称作为命令行参数传递。
./a.out < input
你好布赖恩,我在代码中犯了一个错误,主代码必须采用命令行参数,因此它应该被修改为主(int argc,char * argv []),并且在修改后我可以得到o/p。我甚至介绍了检查空格和制表符和o/p是好的。感谢您的帮助。 – 2013-05-08 00:48:26