作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在翻译缩写词。也就是说,如果它找到“OMS”,则打印“Organización Mundial del trabajo”,但是一旦我编译并运行该程序,它就会无限运行。
我使用 Windows 作为开发环境。我看过例子,但我看不出错误在哪里。这是代码:
%option noyywrap
%{
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
%}
%%
OMS {fprintf(yyout,"Organización Mundial del trabajo");}
%%
int main(int argc, char *argv[]) {
FILE*yyin=fopen(argv[1],"r");
FILE*yyout=fopen(argv[2],"w");
yylex();
fclose(yyin);
fclose(yyout);
return 0;
}
最佳答案
FILE*yyin=fopen(argv[1],"r");
FILE*yyout=fopen(argv[2],"w");
这些行声明并初始化两个名为 yyin
和 yyout
的本地变量。它们在函数结束时被关闭,但在其他情况下保持未使用(即,没有人用它们进行任何输入/输出)。它们不可用于程序的其余部分。同时,与这些局部变量完全独立的全局变量 yyin 和 yyout 保持不变。
您需要做的只是从两行中删除FILE*
:
yyin=fopen(argv[1],"r");
yyout=fopen(argv[2],"w");
现在,名称 yyin
和 yyout
指的是程序其余部分已知的全局变量。
关于c - 为什么 Flex 程序会永远等待并且不打印任何内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569637/
我是一名优秀的程序员,十分优秀!