1

首先,程序要求用户输入一个字符串。然后它调用 yylex() 函数并显示字符串是否被接受。在匹配第一个输入后,我想停止从输入中接受更多字符串。下面的代码首先要求用户输入一个字符串,然后打印它是否被接受。但是这个过程一直持续到我按下 CTRL+D。我只想从字符串中接受一个输入,匹配它然后停止。我的代码有什么问题?谢谢

%%
^[a-z][A-Z][a-z]{1,8}$  {printf("Username Accepted");}
.*                     printf("Invalid Username");
%%

int main()
{
    printf("Enter Username: ");
    yylex();
    printf("\ndone");
}
4

1 回答 1

1

只需自己读取字符串,然后调用 yy_scan_string 后跟 yylex:

char myString[100];
fgets (myString, sizeof(myString), stdin);
yy_scan_string(myString);
yylex ();
于 2013-04-26T20:55:29.010 回答