lex - 计算元音和辅音数量的 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() 函数。
当我从文件中获取输入时,该程序也可以正常工作。
解决方案
使用 getch(); 在 main 函数中的最后一个 printf 语句之后。此外,在命令提示符下输入后,按 Ctrl+Z。我正在使用 Windows,它对我有用。
推荐阅读
- png - Vaadin 切换图像可见性
- reactjs - React Native:Redux - 是否可以从 App.js 分派到 redux 商店?
- r - 按每组中的最后一个元素拆分向量
- javascript - Javascript,浮点数中的 1 位小数,仅带小数
- kubernetes - 在 aws 上使用 k8s 到 LoadBalancer 服务的静态 IP(分配 ID)
- node.js - Puppeteer Chromium 实例管理
- javascript - 模型之间的多重关系
- javascript - 反应提升状态
- java - 我可以将 String.format() 与字符串数组参数一起使用吗?
- python - 如何在 Pandas 数据框中移动列?