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