Вывести соответствующую строку, кроме последнего символа в lex - PullRequest
0 голосов
/ 01 октября 2018

Я совершенно запутался, как решить следующую проблему.Предположим, я сопоставляю строку в форме 'xyz!'в lex, но теперь я хочу напечатать только строку 'xyz', которая не включает последний символ исходной совпадающей строки.Я знаю, как напечатать совпадающую строку,

printf("String:%s", yytext)

, но не уверен, как напечатать только строку 'xyz'.Может кто-нибудь, пожалуйста, прояснить этот вопрос.Заранее спасибо!

1 Ответ

0 голосов
/ 01 октября 2018
printf("String:%.*s", yyleng - 1, yytext);

* в формате printf обычно означает «получить числовое значение из следующего аргумента, которое должно быть int. Так что если yyleng (это длина токена) было 4, то printfбудет делать эквивалент printf("String:%.3s", yytext), что будет означать «Печать не более 3 символов из yytext.

См. man printf для получения более подробной информации.

...