我很困惑如何解决以下问题。假设我以“ xyz!”形式匹配一个字符串。在lex中,但是现在我只想打印不包含初始匹配字符串的最后一个字符的字符串'xyz'。我知道如何打印匹配的字符串,
printf("String:%s", yytext)
但不确定如何仅打印字符串'xyz'。有人可以澄清这个问题吗?预先感谢!
答案 0 :(得分:1)
printf("String:%.*s", yyleng - 1, yytext);
*
在printf格式中通常意味着“从下一个参数获取数字值,该参数必须为int
。因此,如果yyleng
(令牌长度)为4 ,则printf将相当于printf("String:%.3s", yytext)
,这意味着“最多打印yytext
中的3个字符。
有关更多详细信息,请参见man printf。