C语言实现wc项目
该World Count项目用的是C语言编写,只实现了-c、-w、-l、三个功能,由于简单全部代码均由小编自己编写,用的是VS2013只支持windows平台cmd运行。
木有图形界面,参考了Linux系统中的操作方式,即除了可以直接运行.exe程序外,还可以在cmd下输入如:wc.exe [file] -c的带参数方式通过main函数的参数接收来运行。
功能:
1.直接运行,提示输入文件路径,显示三个功能即字符、单词、行数。
2.在cmd下输入,如果参数只有两个则要提示用户需要的功能(-c、-w、-l),若是三个参数则通过strcmp()判断中间的字符来显示相应的功能。
不足之处:
拓展功能还未实现,一味的自己打代码,未有效的利用资源,参考已有的代码。
项目源码:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
int main(int argc, char * argv[])
{
int wc_char = ;
int wc_word = ;
int wc_line = ;
char filename[];
FILE *fp = NULL;
if (argc == )
{
printf("missing file name:\nPlease input file name:");
gets(filename);
fp = fopen(filename, "r");
if (fp == NULL)
{
printf("打开有误!\n");
printf("请按enter键继续....");
_getch();
exit();
//...
}
printf("This is the file :\n");
while ()
{
char ch;
ch = fgetc(fp);
if (ch >= 'A'&&ch <= 'z')
{
putchar(ch);
wc_char++;
}
else if (ch == ' ')
{
putchar(ch);
wc_word++;
}
else if (ch == '\n')
{
putchar(ch);
wc_word++;
wc_line++;
}
else if (ch = EOF)
{
break;
}
}
printf("The char count is %d\n", wc_char);
printf("The word count is %d\n", wc_word);
printf("The line count is %d\n", wc_line);
fclose(fp);
_getch();
exit();
}
else if (argc == )
{
fp = fopen(argv[], "r");
if (fp == NULL)
{
printf("打开有误!\n");
printf("请按enter键继续....");
_getch();
exit();
//...
}
while ()
{
char ch;
ch = fgetc(fp);
if (ch >= 'A'&&ch <= 'z')
{
wc_char++;
}
else if (ch == ' ')
{
wc_word++;
}
else if (ch == '\n')
{
wc_word++;
wc_line++;
}
else if (ch = EOF)
{
break;
}
}
printf("文件打成功!\n请输入统计方式如(-c\-w\-l):");
gets(filename);
if (strcmp(filename, "-c") == )
{
printf("The char count is %d\n", wc_char);
}
else if (strcmp(filename, "-w") == )
{
printf("The word count is %d\n", wc_word);
}
else if (strcmp(filename, "-l") == )
{
printf("The line count is %d\n", wc_line);
}
}
else if (argc == )
{
fp = fopen(argv[], "r");
if (fp == NULL)
{
printf("打开有误!\n");
printf("请按enter键继续....");
_getch();
exit();
//...
}
while ()
{
char ch;
ch = fgetc(fp);
if (ch >= 'A'&&ch <= 'z')
{
wc_char++;
}
else if (ch == ' ')
{
wc_word++;
}
else if (ch == '\n')
{
wc_word++;
wc_line++;
}
else if (ch = EOF)
{
break;
}
}
if (strcmp(argv[],"-c")==)
{
printf("The char count is %d\n", wc_char);
}
else if (strcmp(argv[],"-w")==)
{
printf("The word count is %d\n", wc_word);
}
else if (strcmp(argv[],"-l")==)
{
printf("The line count is %d\n", wc_line);
}
fclose(fp);
}
}
本项目源代码上传至个人的GitHub:https://github.com/BelieveMyself-ZLH/wc
C语言实现wc项目的更多相关文章
- 软件工程wc项目,基于py
###WC项目文件链接:https://github.com/ILTHEW/wc.git 个人项目:WC 实践是理论的基础和验证标准,希望读者贯彻"做中学"的思想,动手实现下面的项 ...
- C语言实现wc基本功能
GitHub地址:https://github.com/hhx007/wc 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数. 这个项目要求写一个命令行程序,模仿已有w ...
- 软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序
软件工程第三个程序:“WC项目” —— 文件信息统计(Word Count ) 命令行程序 格式:wc.exe [parameter][filename] 在[parameter]中,用户通过输入参数 ...
- WinForm多语言版本实战项目演练
一.课程介绍 关于如何实现“WinForm多语言版本”网上有很多实现技术方案,可以说是“琳琅满目”,"包罗万象".俗话说的好:一千个读者就有一千个哈姆雷特!如果您工作中恰好也遇到这 ...
- 手把手和你一起实现一个Web框架实战——EzWeb框架(二)[Go语言笔记]Go项目实战
手把手和你一起实现一个Web框架实战--EzWeb框架(二)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 上一篇文章我们实现了框架的雏形,基本地 ...
- 手把手和你一起实现一个Web框架实战——EzWeb框架(三)[Go语言笔记]Go项目实战
手把手和你一起实现一个Web框架实战--EzWeb框架(三)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 本篇代码,请选择demo3 这一篇文章 ...
- 手把手和你一起实现一个Web框架实战——EzWeb框架(四)[Go语言笔记]Go项目实战
手把手和你一起实现一个Web框架实战--EzWeb框架(四)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 这一篇文章主要实现路由组功能.实现路由 ...
- 手把手和你一起实现一个Web框架实战——EzWeb框架(五)[Go语言笔记]Go项目实战
手把手和你一起实现一个Web框架实战--EzWeb框架(五)[Go语言笔记]Go项目实战 代码仓库: github gitee 中文注释,非常详尽,可以配合食用 本篇代码,请选择demo5 中间件实现 ...
- 作业三:WC项目
WC一个简单的文件检测系统 用c语言实现 不多说 上代码 #include<stdio.h> #include<stdlib.h> #include <io.h> ...
随机推荐
- GetTickCount的几个案例
一,获得运行时间: var T1,T2 : double; begin T1 := GetTickCount; //需要做的事情 T2 := GetTickCount; ShowMessage( fl ...
- jsonpath对json数据进行分析校验做接口测试
在做接口测试的时候, 我们需要对返回的数据进行分析校验, 一般返回的都是json格式的数据, 怎么来解析校验呢? 之前有看过使用递归遍历json数据的, 然后找到了jsonpath, 可以很方便的对j ...
- 红米.USB安装_无法打开
1.必须有 SIM卡,才能打开 USB安装 红米1s(miui8.5)就是这样 2. 3. 4. 5.
- Confluence 6 找到未使用的空间
有时候,你希望找到你系统中没有使用的内容.有时候你也希望能够对这些内容进行更多的关注,但是如何找到一些有关长期不更新的页面,或者长期不使用的空间? View Space Activity 页面中的内容 ...
- poj3177边-双连通分量
题意和poj3352一样..唯一区别就是有重边,预先判断一下就好了 #include<map> #include<set> #include<list> #incl ...
- iis_rewrite3突然无法使用(因为它过期啦)
转自http://www.b1y.cn/post/216.html ISAPI_Rewrite3完全版会有45天的试用期,过期了需要99美元进行够买,网上有很多破解版的,方法如下: 1.先从官网下一个 ...
- tensorflow中张量(tensor)的属性——维数(阶)、形状和数据类型
tensorflow的命名来源于本身的运行原理,tensor(张量)意味着N维数组,flow(流)意味着基于数据流图的计算,所以tensorflow字面理解为张量从流图的一端流动到另一端的计算过程. ...
- Convolutional Neural Networks for Visual Recognition 2
Linear Classification 在上一讲里,我们介绍了图像分类问题以及一个简单的分类模型K-NN模型,我们已经知道K-NN的模型有几个严重的缺陷,第一就是要保存训练集里的所有样本,这个比较 ...
- [CJOJ2425][SYZOI Round1]滑稽的树
cjoj sol 子树转化成dfs序上的区间. 所以就变成了:区间Kth,区间内[a,b]范围内的数有多少个,单点修改 裸的树套树啊. code #include<cstdio> #inc ...
- 使用Visual Studio进行单元测试-Shim类中无法找到参数包含CancellationTokenSource的方法
Shim类中无法找到参数包含CancellationTokenSource的方法,这句话有点绕口,看例子. 一.代码 public class CancellationDemo { public in ...