나는 양수의 평균을 수행하기 위해 간단한 렉스 프로그램을 작성했다. 프로그램은 잘 컴파일되지만 예상 한 결과를 얻을 수 없다. 나는 프로그램의 입력을 파일을 명령 줄 인수로 filename을 지정하면됩니다. lex 프로그램의 결과는 아무 것도 표시되지 않고 공백으로 표시됩니다. 저는 lex 초보자이며 도움을 주시면 감사하겠습니다. 아래 코드를 첨부했습니다. 이 코드는 Redhat Linux 커널 버전 2.4로 작성되었습니다.예기치 않은 렉스 프로그램의 출력
%{
#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
안녕하세요. Bryan, 코드에서 실수를했습니다. 주 코드가 명령 줄 인수를 취해야하므로 main (int argc, char * argv [])으로 수정해야하며 같은 수정을 한 후에는 o/p. 공백과 탭에 대한 검사를 도입하고 o/p는 괜찮습니다. 도움을 주셔서 감사합니다. –