linux下wc功能的简单实现
1.代码来源:自己编写
2.运行环境:linux终端
3.编程语言:c/c++语言
4.bug:未发现
5.当前功能:可以统计字符的字符数、行数、单词数
6.使用方法:wc -l 文件名-->统计行数、wc -w 文件名-->统计但词数、wc -c 文件名-->统计字符数
7.gitbub代码地址:https://github.com/moonzhu/wc
8.实现:
/*
 * WC.h
 *
 *  Created on: Sep 9, 2017
 *      Author: moon
 */
#ifndef WC_H_
#define WC_H_
#include <string>
class WC {
public:
	WC();
	virtual ~WC();
private:
	std::string fileName;
public:
	/**
	 * @function:Setting value of fileName
	 */
	void setFileName(std::string fileName);
	/**
	 * @function:Counting the number of character
	 * @return:If success,return the number of character,else return -1
	 */
	int computingChar(void);
	/**
	 * @function:Counting the number of word
	 * @return:If success,return the number of word,else return -1
	 */
	int computingWord(void);
	/**
	 * @function:Counting the number of line
	 * @return:If success,return the number of line,else return -1
	 */
	int computingLine(void);
};
#endif /* WC_H_ */
/*
 * WC.cpp
 *
 *  Created on: Sep 9, 2017
 *      Author: moon
 */
#include "WC.h"
#include <fstream>
using namespace std;
WC::WC() {
}
WC::~WC() {
}
void WC::setFileName(string fileName) {
	this->fileName = fileName;
}
int WC::computingChar(void) {
	std::ifstream in(fileName);
	if (!in.is_open())
		return 0;
in.seekg(0, std::ios_base::end);
	std::streampos sp = in.tellg();
	in.close();
	return sp;
}
int WC::computingLine(void) {
	ifstream in;
	int num = 0;
	string str;
in.open(fileName);
	while (getline(in, str)) {
		num++;
	}
	in.close();
	return num;
}
int WC::computingWord(void) {
	int num = 0;
	char c;
	char priorC;
	ifstream in;
in.open(fileName);
	in.get(c);
	priorC = ' ';
	while (!in.eof()) {
		if (c >= 'a' && c <= 'z') {
			if (priorC == ' ' || priorC == '\n' || priorC == '.'
					|| priorC == ',' || priorC == ':' || priorC == '?'
					|| priorC == '!') {
				num++;
			}
		}
priorC = c;
		in.get(c);
	}
	in.close();
	return num;
}
//============================================================================
// Name        : wc.cpp
// Author      : 
// Version     :
// Copyright   : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <iostream>
#include "WC.h"
#include <string.h>
using namespace std;
int main(int argc, char **argv) {
	WC wc;
if (argc < 3)
		return -1;
	string fileName(argv[2]);
	wc.setFileName(fileName);
	if (strcmp(argv[1], "-c") == 0) {
		cout << wc.computingChar() << endl;
	} else if (strcmp(argv[1], "-w") == 0) {
		cout << wc.computingWord() << endl;
	} else if (strcmp(argv[1], "-l") == 0) {
		cout << wc.computingLine() << endl;
	} else if (strcmp(argv[1], "-s") == 0) {
}
return 0;
}
linux下wc功能的简单实现的更多相关文章
- linux下进度条的简单实现
		
在实现进度条之前,先学习一下makefile. 一个工程中的源文件不计其数,其按类型.功能.模块分别放在若干个目录中, makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编 ...
 - 编程实现类似Linux下cp功能
		
MyCP的代码实现 一.题目要求: 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.txt XXX2.bi ...
 - Linux下VLAN功能的实现 (转)
		
1.Linux网络栈下两层实现 1.1简介 VLAN是网络栈的一个附加功能,且位于下两层.首先来学习Linux中网络栈下两层的实现,再去看如何把VLAN这个功能附加上去.下两层涉及到具体的硬件 ...
 - Linux下getopt()函数的简单使用
		
最近在弄Linux C编程,本科的时候没好好学啊,希望学弟学妹们引以为鉴. 好了,虽然啰嗦了点,但确实是忠告.步入正题: 我们的主角----getopt()函数. 英雄不问出处,getopt()函数的 ...
 - Linux下好用的简单实用命令
		
1.你是否为在输入了一大串命令之后发现第一个字符打错了而苦恼?只能删除重来嘛?或者一步步左移光标? NO,一个组合键轻松搞定 Ctrl+A -----到命令行首 Ctrl+E ------到命令行末 ...
 - Linux下libaio的一个简单例子
		
转载:http://www.cnblogs.com/aLittleBitCool/archive/2011/10/18/2216646.html 异步io,很好玩的一个东西,从接口来看,封装的比较厉害 ...
 - [转载]Linux下getopt()函数的简单使用
		
转载源地址:https://www.cnblogs.com/qingergege/p/5914218.html 1.getopt()函数的出处就是unistd.h头文件(哈哈),写代码的时候千万不要忘 ...
 - 转:Linux下使用Nginx搭建简单图片服务器
		
最近经常有人问图片上传怎么做,有哪些方案做比较好,也看到过有关于上传图片的做法,但是都不是最好的,今天再这里简单讲一下Nginx实现上传图片以及图片服务器的大致理念. 如果是个人项目或者企业小项目,仅 ...
 - shell 脚本实战笔记(11)--Mysql在linux下的安装和简单运维
		
前言: linux中安装mysql以及配置的管理, 基础的运维和管理还是需要会一些的. 这边作下笔记, 以求天天向上(^_^). 安装流程:*). 安装mysql-server1). 借助yum检索相 ...
 
随机推荐
- invoke方法
			
主要是为了类反射,这样你可以在不知道具体的类的情况下,根据配置的字符串去调用一个类的方法.在灵活编程的时候非常有用.很多框架代码都是这样去实现的.但是一般的编程,你是不需要这样做的,因为类都是你自己写 ...
 - [label][IDE] Develop Node.js Project With WebStorm
			
WebStorm 是一个支持 Node.js,CoffeeScript, TypeScript, Dart, Jade, Sass, LESS and Stylus 这些最新 web 开发技术的集成开 ...
 - Java enum枚举类型
			
java的枚举类型详解: 简单示例: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 复杂示例(带自定义构造方法与类型) public enum En ...
 - Jenkins 使用 Build Flow 插件配置工作流任务依赖
			
Jenkins 使用 Build Flow 插件配置工作流任务依赖 Jenkins 多任务依赖方式的配置方法目前可以通过MultiJob Project 或者Build Flow 或者Piplelin ...
 - 使用 pdf.js 查看发票时,显示不了台头和印章的解决办法
			
系统中使用了 pdf.js 来查看 PDF 文件,发现在查看 电子发票时, 缺失了很多信息, 刚开始以为是 PDF.JS 的 BUG, 后来调试发现只需要在 IIS 里添加一个 bcmap 后缀的 m ...
 - unity 移动物体的方式
			
1. 简介 在Unity3D中,有多种方式可以改变物体的坐标,实现移动的目的,其本质是每帧修改物体的position. 2. 通过Transform组件移动物体 Transform 组件用于描述物体在 ...
 - python--面向对象(02)
			
1.类的成员 在类中你能写的所有内容都是类的成员 class 类名: # 方法 def __init__(self, 参数1, 参数2....): # 属性变量量 self.属性1 = 参数1 sel ...
 - HTML防止input回车提交表单
			
原链接:https://blog.csdn.net/ligang2585116/article/details/44699567 自动提交情况说明: 1.默认情况下,单个输入框,无论按钮的type=& ...
 - Linux下查找命令
			
在CentOs下查找某个目录下的某个文件,使用如下指令: find /目录 -name 文件名 eg:查找当前目录下关于hadoop的文件 find / -name hadoop
 - [HTML] <meta name="viewport" content="width=device-width,initial-scale=1.0">释义
			
<meta name="viewport" content="width=device-width,initial-scale=1.0">这是 HT ...