给定一个字符串 - > #1温度是32CELSIUS
我应该打印输出 - > #1温度是64FAHRENHEIT
我知道这不是正确的转换,但这不是我想要将摄氏前面的值加倍并返回的重点。
#include<stdio.h>
%}
digit [0-9]
celsius "CELSIUS"
%%
{digit}+{celsius} {printf("FAHRENHEIT");}
%%
int main(void)
{
yylex();
return 0;
}
这是我到目前为止的代码我有点迷失在如何转换数字,因为我不想转换任何数字,但只有世界前面的摄氏度。任何人都可以指导我
答案 0 :(得分:2)
您发布的代码按预期为我工作。您需要做的就是在sscanf()
作为第一个参数添加对printf()
的调用(在调用yytext
之前)。这样您就可以将整数存储在变量中,然后可以通过printf()
调用将其翻倍并打印出来。
变化:
{digit}+{celsius} {printf("FAHRENHEIT");}
要:
{digit}+{celsius} { int x; sscanf(yytext,"%d",&x); printf("%dFAHRENHEIT",x*2);}
如果要匹配float而不是int,请将匹配规则更改为以下内容:
{digit}+.{digit}+{celsius}