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

状态机实现文件单词统计

系统如何查找可执行文件

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

相关文章:

  • 基于STM32控制直流电机加减速正反转设计
  • FDR的定位原理
  • Transformer核心技术深度解析:多头注意力机制与架构精粹
  • 计算机视觉---YOLOv6
  • web架构3------(nginx的return跳转,gzip压缩,目录浏览,访问控制和location符号优先级)
  • 智慧政务标准规范介绍:构建高效、协同的政务信息体系
  • EchoMimicV2:迈向引人注目、简化的半身人类动画
  • vscode中的markdown表格列宽
  • DAY 39 超大力王爱学Python
  • ThreadLocal ,底层原理,强引用,弱引用,内存泄漏
  • Ⅲ-1.计算机二级选择题(三大结构之基本语句)
  • C++11 : 智能指针
  • FreeCAD源码分析: 单位制系统
  • 量子物理:初步认识量子物理
  • 车载软件更新 --- 数据完整性和正确性策略(数据验签事宜汇总)
  • 香橙派3B学习笔记5:Linux文件系统分区_A/B系统分区
  • C++ - 标准库之 <sstream> ostringstream(ostringstream 概述、基本使用、清空内容、进阶使用)
  • torch.randn vs torch.rand
  • 《深度探索C++对象模型》阅读笔记(完整版)
  • DAY 41 超大力王爱学Python
  • 回文字符串
  • window 显示驱动开发-支持多个处理器
  • unidbg patch 初探 微博deviceId 案例
  • STL解析——list的使用
  • 如何增加 cPanel中的 PHP 最大上传大小?
  • CSP使用严格设置
  • 【PhysUnits】15.9 引入P1后的右移运算(shr.rs)
  • C++ 简介
  • 基于 STM32 的医疗垃圾运输小车智能控制系统设计与实现
  • 房屋租赁系统 Java+Vue.js+SpringBoot,包括房屋信息、看房申请、租赁合同、房屋报修、收租信息、维修数据、租客管理、公告管理模块