当前位置: 首页 > article >正文

状态机实现文件单词统计

系统如何查找可执行文件

默认:在PATH路径下寻找文件文件下

执行当前目录下文件:

./:指定文件目录是当前目录
./count:执行当前目录文件

编译.c文件为运行文件

gcc -o count 0voice.c #将0voice.c编译为名字count 

在这里插入图片描述

为什么主函数要那么写?

答案:不知道
int argc : 这一命令行的参数列数 对参数列数判断 防止输入参数过少
char* argv[]:指针数组 是个数组里面每一个元素都是char*指针
effect:获取要操作的文件名字

#include<stdio.h>
#define IN 0 //字母
#define OUT 1 //符号#define INIT OUT //默认符号状态int isWord(char c)
{if((c == ' ') || (c == ',') || (c == '.') || (c == '\'') || (c == '\'') ||(c == '+')||(c == '\n') || ('\t' == c) || (';' == c) || ('!' == c) || ('{' == c) || ('}' == c)){return 0;}return 1;
}
int count_word(char* filename)
{//1.设置开始状态int status = INIT;int countWord = 0;//2.读入文件  filename:默认当前目录的这个名字FILE *fp = fopen(filename,"r");if(fp == NULL) return -1;//3.循环获取文件中值 判断://      out状态 + 判断到了字母 单词数量+1 进入in//      out状态 + 符号  out状态  不变//      in状态 + 字母 in状态 不变//      in状态 + 分隔符 进入out状态//      //fgetc:文件中获取字符 EOF 0x800作为文件结尾char c;while((c = fgetc(fp)) != EOF){if(OUT == status){if(isWord(c)){countWord++;status = IN;}}else if(IN == status){if(!isWord(c)) status = OUT;}}return countWord;
}// argc:要接受多少个参数
//argv: ** 指向字符串名称 例如:
int main(int argc,char* argv[])
{//1.就一行不携带我们要的路径参数 那么直接错误if(argc < 2) return 1; //2.读入文件 统计数量 argv[1]:操作文件的名称字符串int count = count_word(argv[1]);printf("%d\n",count);return 0;
}

编译文件

gcc -o count count.c
gcc -o count ./count.c

使用c打开文本文档

./count b.txt
./:标明哪个目录 由于argc argv得到操作的文件

http://www.lryc.cn/news/2397208.html

相关文章:

  • 从0开始学习R语言--Day13--混合效应与生存分析
  • 基于mediapipe深度学习的虚拟画板系统python源码
  • 复变函数 $w = z^2$ 的映射图像演示
  • Python实现P-PSO优化算法优化循环神经网络LSTM回归模型项目实战
  • 复合机器人:纠偏算法如何重塑工业精度与效率?
  • 审计- 1- 审计概述
  • 在MDK中自动部署LVGL,在stm32f407ZGT6移植LVGL-8.4,运行demo,显示label
  • 模块二:C++核心能力进阶(5篇) 篇一:《STL源码剖析:vector扩容策略与迭代器失效》
  • 计算机组成原理核心剖析:CPU、存储、I/O 与总线系统全解
  • 数据分类分级的实践与反思:源自数据分析、治理与安全交叉视角的洞察
  • 自动化立体仓库WCS的设计与实现
  • 百度蜘蛛池的作用是什么?技术@baidutopseo
  • 8.linux文件与文件夹内处理命令cp,mv,rm
  • JavaScript性能优化:实战技巧提升10倍速度
  • 核函数:解锁支持向量机的强大能力
  • UE5 2D地图曝光太亮怎么修改
  • C# 类和继承(基类访问)
  • 帕金森带来的生活困境
  • 集成测试的流程总结
  • Redis最佳实践——性能优化技巧之Pipeline 批量操作
  • Node.js 项目调试指南
  • win32相关(虚拟内存和物理内存)
  • Linux操作系统安全管理概述与命令操作
  • 《操作系统真相还原》——中断
  • [yolov11改进系列]基于yolov11引入特征融合注意网络FFA-Net的python源码+训练源码
  • 助力活力生活的饮食营养指南
  • 【软件测试】测试框架(unittest/pytest)
  • Kotlin 中 companion object 扩展函数详解
  • MySQL半同步复制配置和参数详解
  • 使用FastAPI构建车牌检测识别服务