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

状态机实现文件单词统计

系统如何查找可执行文件

默认:在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.lqws.cn/news/72307.html

相关文章:

  • 人工智能在智能制造业中的创新应用与未来趋势
  • HealthBench医疗AI评估基准:技术路径与核心价值深度分析(上)
  • 架构师面试题整理
  • VitalInsight智能体检报告解读
  • 【深度学习-Day 21】框架入门:神经网络模型构建核心指南 (Keras PyTorch)
  • 每天总结一个html标签——a标签
  • CMake指令:string(字符串操作)
  • Linux--进程概念
  • 车载诊断架构 --- DTC消抖参数(Trip Counter DTCConfirmLimit )
  • 05-power BI高级筛选器filter与Values人工造表
  • NVM,Node.Js 管理工具
  • NodeJS全栈WEB3面试题——P4Node.js后端集成 服务端设计
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • Node.js 中使用 Express 框架系统详细讲解
  • Redis持久化机制详解:RDB与AOF的深度剖析
  • 风控研发大数据学习路线
  • 大数据学习(127)-hive日期函数
  • 使用Python进行函数作画
  • 超声波测距三大算法实测对比
  • 代码随想录算法训练营第60期第五十五天打卡
  • 详解一下RabbitMQ中的channel.Publish
  • flutter开发安卓APP适配不同尺寸的手机屏幕
  • mysql数据库实现分库分表,读写分离中间件sharding-sphere
  • 【数据分析】第三章 numpy(1)
  • MapReduce(期末速成版)
  • node-sass 报错
  • CppCon 2014 学习:Gamgee: A C++14 library for genomic data processing and analysis
  • Python Day41
  • Python趣学篇:用Pygame打造绚烂流星雨动画
  • C++.cstring string