首页 > 解决方案 > 计算元音和辅音数量的 Lex 程序即使在输入结束后也不会终止

问题描述

我编写了一个简单的程序来计算 LEX 中元音和辅音的数量。但是在我输入输入并进入无限循环后程序并没有终止。这是程序

%{
    #include<stdio.h>
    int vow_count = 0;
    int const_count = 0;
%}

%%
[aeiouAEIOU] {vow_count++;}
[a-zA-Z] {const_count++;}
%%

int yywrap(){return 1;}

int main()
{

    printf("Enter a string : ");

    yylex();

    printf("\n No. of vowels = %d", vow_count);
    printf("\n No. of consonants = %d\n", const_count);

    return 0;
}

这是输出

输出图像

我几乎尝试了所有方法,我尝试过使用“%option noyywrap”,但没有使用 yywrap() 函数。

当我从文件中获取输入时,该程序也可以正常工作。

标签: lex

解决方案


使用 getch(); 在 main 函数中的最后一个 printf 语句之后。此外,在命令提示符下输入后,按 Ctrl+Z。我正在使用 Windows,它对我有用。


推荐阅读