Flex를 사용하여 텍스트 파일의 단어가 동사인지 확인하는 간단한 프로그램을 작성했습니다. 하지만 출력을 다른 텍스트 파일에 저장(인쇄)하고 싶습니다.
가능합니까? 어떻게 해야 합니까?
내 샘플 코드는 다음과 같습니다
%%
[\t]+
is |
am |
are |
was |
were {printf("%s: is a verb",yytext);}
[a-zA-Z]+ {printf("%s: is a verb",yytext);}
. |\n
%%
int main(int argc, char *argv[]){
yyin = fopen(argv[1], "r");
yylex();
fclose(yyin);
}
답변1
lex
나는 /에 대해 충분히 알지 못하지만 flex
질문에서 본 코드를 바탕으로 다음 코드를 추가해 보았습니다 main()
.
FILE * myfd = fopen(argv[2], "w");
fprintf()
대신 다음 과 같이 사용하십시오 printf()
.
{ fprintf(myfd, "%s: is a verb", yytext); }
저는 argv[2]
파일 이름에 대한 소스를 사용하고 있습니다. 즉, 프로그램 호출에서 두 번째 매개변수로 이를 제공해야 하지만 파일 이름이 포함된 문자열을 하드코딩할 수도 있습니다.
답변2
스크립트가 결과를 인쇄하도록 할 수 있습니다.표준 출력(일반 터미널 출력) 그런 다음 파일로 리디렉션합니다.>
-운영자:
스크립트가 파일이고 /home/USERNAME/bin/isVerb
"procrastination"이라는 단어를 확인하고 싶다고 가정하면 다음과 같이 실행할 수 있습니다.
/home/USERNAME/bin/isVerb procrastinate > /home/USERNMAE/Documents/isVerb-procrastinate.txt
이 명령은 파일을 생성 /home/USERNMAE/Documents/isVerb-procrastinate.txt
하거나 이미 존재하는 경우 파일을 바꾸고 출력을 해당 파일에 저장합니다.
명령이 출력을 파일에 추가하도록 하려면(이미 존재하는 경우 파일을 생성하십시오) 다음을 사용할 수 있습니다.>>
바꾸다 >
.