1.gitHub地址:https://github.com/loveYuJun/wc.exe.git

2.PSP表格

psp2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 45 50
Estimate 估计这个任务所需时间 45 50
Development 开发 640 520
Analysis 需求分析(学习新技术) 200 150
Design spec 生成设计文档 10 10
Design Review 设计复审 30 15
Coding standard 代码规范(为目前开发制定合适的规范) 10 10
Design 具体设计 30 25
Coding 具体编码 100 120
Code Review 代码复审 60 40
Test 测试(自我测试,修改代码,提交修改) 200 150
Reporting 报告 100 90
Test Report 测试报告 20 30
Size Measurement 计算工作量 20 30
Postmortem & Process Improvement Plan 事后总结,并提出过程修改计划 60 30
合计   785 600

3.解题思路

使用C语言进行读取文件,主要利用C语言中的函数fgetc(),以进行对文档中的字符,词,行的计算。

4.设计实现过程

利用函数fgetc()读取到文件末尾时,会返回一个EOF,以此作为循环结束的条件,可以直接得到字符数;在此循环条件下对读取到的字符进行判定,当字符不为空白符或标点符号时,判定这是一个词的开始,当再次遇到空白或标点符号时,判定一个词的结束;在循环条件下,计算换行符出现的次数,结果加1即为行数。

5.主要代码

//主函数加全局变量
FILE *fp;
char flag;
int main(){
char filename[];
printf("please input filename!\n");
gets(filename);
countchar(filename);
countword(filename);
countline(filename);
} //计算字符数
int countchar(char *filename){
int chars=;
fp=fopen(filename,"r");
flag=fgetc(fp);
for( ; flag!=EOF ; ){
chars++;
flag=fgetc(fp);
}
printf("The char count of the file is %d.\n",chars);
fclose(fp);
return ;
} //j计算词数
int countword(char *filename){
int words=;
fp=fopen(filename,"r");
flag=fgetc(fp);
int inword=false;
for( ; flag!=EOF ;){
if(!isspace(flag)&&!ispunct(flag)&&!inword){
words++;
inword=true;
}
if(inword&&isspace(flag)||ispunct(flag))
inword=false;
flag=fgetc(fp);
}
printf("The word count of the file is %d.\n",words);
fclose(fp);
return ;
} //计算行数
int countline(char *filename){
int lines=;
fp=fopen(filename,"r");
flag=fgetc(fp);
for( ;flag!=EOF ;){
if(flag=='\n')
lines++;
flag=fgetc(fp);
}
lines++;
printf("The line count of the file is %d.\n",lines);
fclose(fp);
return ;
}

6.测试运行

(1)空白文档

(2)单行文档

(3)多行文档

7.项目小结

通过这次的作业,我认识到C语言还有不了解的,同时,在这个过程中,我更加了解了fgetc()函数的使用,了解了一个软件开发的较为具体的过程。

wc.exe程序的更多相关文章

  1. C++实现wc.exe程序

    github项目地址:https://github.com/insomniali/wc 基本功能 wc.exe -c file     统计文件file的字符数  [实现] wc.exe -w fil ...

  2. wc.exe指令(C++)

    https://github.com/kielingpao/wc 项目相关要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.ex ...

  3. 个人项目(WC.exe)(java)(基于图形界面)

    一.Github项目地址:https://github.com/Leungdc/ENhomework 二.PSP: PSP2.1 Personal Software Process Stages 预估 ...

  4. WC.exe【C】

    gitee传送门!!!(电脑打不开github,多次尝试未果,决定先用gitee存着先) 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  5. 小白のjava实现wc.exe功能

    GitHub地址 项目完成情况 基本功能列表(已实现) wc.exe -c file.c     //返回文件 file.c 的字符数 wc.exe -w file.c    //返回文件 file. ...

  6. 模仿WC.exe的功能实现--node.js

    Github项目地址:https://github.com/102derLinmenmin/myWc WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要 ...

  7. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  8. 用c语言基本实现wc.exe功能

    网址:https://github.com/3216005214/wc.exe wc项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿 ...

  9. java实现wc.exe

    Github地址:https://github.com/ztz1998/wc/tree/master 项目相关要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功 ...

随机推荐

  1. Python访问元组

    Python访问元组: 使用索引下标进行访问元组: # 通过索引下标进行访问 tuple_1 = ('a','b','c','d','e','f','g') # 输出元组中的第一个值 print(tu ...

  2. Python os.symlink() 方法

    概述 os.symlink() 方法用于创建一个软链接.高佣联盟 www.cgewang.com 语法 symlink()方法语法格式如下: os.symlink(src, dst) 参数 src - ...

  3. PHP strcasecmp() 函数

    实例 比较两个字符串(不区分大小写): <?php高佣联盟 www.cgewang.comecho strcasecmp("Hello world!","HELLO ...

  4. Spring进阶案例之注解和IoC案例

    Spring进阶案例之注解和IoC案例 一.常见的注解分类及其作用 从此前的基于xml的IoC开发案例和依赖注入案例中,我们可以将xml配置归纳为: <bean id="" ...

  5. day21:正则函数&模块和包(import)

    正则函数 1.search  通过正则匹配出第一个对象返回,通过group取出对象中的值 # search 通过正则匹配出第一个对象返回,通过group取出对象中的值 strvar = "1 ...

  6. Linux的VMWare中Centos7磁盘分区管理 fdisk分区和制作文件系统格式化和开机自动挂载

    一.硬盘的组成零件扇区 磁道 磁盘容量 磁盘分区 简介 硬盘由容量.柱面数.磁头数.扇区数 C/H/S, Cylinder, Head, Sector(柱面/磁头数/扇区数) 1.磁头数表示硬盘总共有 ...

  7. iptables基础实战练习

    目录: 一.基本规则练习 二.SNAT源地址转移 三.DNAT目标地址转移 一.基础规则练习 (1) 放行ssh (端口:22) 1 iptables -A INPUT -d 192.168.42.1 ...

  8. Raft协议理解

    raft协议最关键的部分是领导选举和日志复制 日志复制 日志匹配原则:如果两个日志在相同索引位置的entry的任期号相同,那么这两个日志从头到这个索引位置之前完全相同. 日志匹配原则可以解释为如下两条 ...

  9. 笨办法学python3练习代码ex19.py

    定义函数的语法: def  函数名(参数) (语句) #函数和变量 #函数里的变量与脚本里的变量是没有联系的. def cheese_and_crackers(cheese_count,boxes_o ...

  10. sqlzoo刷题 SELECT from Nobel Tutorial

    SELECT from Nobel Tutorial 1.Change the query shown so that it displays Nobel prizes for 1950. SELEC ...