• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > Linux下控制(统计)文件的生成的C代码实现

Linux下控制(统计)文件的生成的C代码实现

作者:周兆熊 字体:[增加 减小] 来源:互联网 时间:2017-05-28

周兆熊 通过本文主要向大家介绍了linux文件系统代码,linux 文件系统源代码,linux文件传输工具,linux文件系统目录,linux恢复删除文件等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文分享了Linux下控制(统计)文件的生成的C代码实现案例,供大家参考,具体内容如下

一、需求描述
不定时地在Linux机器下的某目录中放入文件,文件内容中包含了用户号码、起止时间等字段,现要求编写一程序来统计目前该目录中所有文件中的记录总条数及所有记录中的最早起始时间和最晚结束时间。

例如,该目录中有两个文件Test_1.txt和Test_2.txt,其中Test_1.txt文件内容为:

  • 15696192591|15696192592|20151103 120909|20151103 201545|
  • 15696192593|15696192594|20151103 110909|20151103 191545|
  • 02344273522|02344273523|20160108 110909|20160109 091545|

Test_2.txt文件内容为:

  • 15696192595|15696192596|20151102 120909|20151104 201545|
  • 15696192597|15696192598|20151101 110909|20151103 191545|

即文件中的每条记录的格式为:呼叫号码|被呼叫号码|呼叫起始时间|呼叫结束时间|,要求生成的控制文件CtlFile.txt的内容为:

  • 20151101 110909|20160109 091545|5|

即Test_1.txt和Test_2.txt两个文件中五条记录的开始时间的最小值为“20151101 110909”,结束时间的最大值为“20160109 091545”,目前共处理了5条记录。也就是说,控制文件的格式为:呼叫起始时间最小值|呼叫结束时间最大值|记录总条数|。

二、程序代码
本程序一共包括了三个代码文件:main.c、CtlFileCreate.c和CtlFileCreate.h,具体代码如下:

main.c

/**********************************************************************
* 版权所有 (C)2016, Zhou Zhaoxiong。
*
* 文件名称:CtlFileCreate.c
* 文件标识:无
* 内容摘要:目录中文件的读取及控制文件的生成
* 其它说明:无
* 当前版本:V1.0
* 完成日期:20160109
*
**********************************************************************/
#include "CtlFileCreate.h"

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其它说明:无
* 修改日期    版本号   修改人      修改内容
* -------------------------------------------------------------------
* 20160109    V1.0   Zhou Zhaoxiong    创建
***********************************************************************/

INT32 main()
{
  ReadCtlFile();  // 获取控制文件存放路径、控制文件全路径名及文件内容字段值

  ReadSrcFileAndWriteCtlFile();  // 扫描源文件目录, 并写控制文件

  return 0;
}

</div>

CtlFileCreate.h

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:CtlFileCreate.h
* 文件标识:无
* 内容摘要:目录中文件的读取及控制文件的生成
* 其它说明:无
* 当前版本:V1.0
* 完成日期:20151102
*
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>

// 数据类型重定义
typedef unsigned char    UINT8;
typedef unsigned short int UINT16;
typedef unsigned int    UINT32;
typedef signed  int    INT32;
typedef unsigned char    BOOL;

// 参数类型
#define MML_INT8_TYPE    0
#define MML_INT16_TYPE   1
#define MML_INT32_TYPE   2
#define MML_STR_TYPE    3

#define TRUE     (BOOL)1
#define FALSE    (BOOL)0

// 字段最大长度
#define MAX_RET_BUF_LEN   1024

// 源文件字段结构体
typedef struct
{
  UINT8 szSrcNumber[50];
  UINT8 szDstNumber[50];
  UINT8 szDataStartTime[50]; 
  UINT8 szDataEndTime[50]; 
} T_SrcFileContent;

// 函数声明
void Sleep(UINT32 iCountMs);
void ReadCtlFile(void);
void ReadSrcFileAndWriteCtlFile(void);
void GetSrcFileContentAndWriteCtlFile(UINT8 *pszSrcFileName);
void GetSrcFileFieldValue(UINT8 *pszContentLine, T_SrcFileContent *ptSrcFileContent);
void GetCtlFileContentAndWrite(T_SrcFileContent *ptSrcFileContent, UINT8 *pszContentBuffer);
BOOL GetValueFromStr(UINT16 iSerialNum, UINT8 iContentType, UINT8 *pSourceStr, UINT8 *pDstStr, UINT8 cIsolater, UINT32 iDstStrSize);
void RemoveLineEnd(UINT8 *pszStr);
void WriteToCtlFile(UINT8 *pszContentLine);

</div>

CtlFileCreate.c

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:CtlFileCreate.c
* 文件标识:无
* 内容摘要:目录中文件的读取及控制文件的生成
* 其它说明:无
* 当前版本:V1.0
* 完成日期:20151102
*
**********************************************************************/
#include "CtlFileCreate.h"

// 全局变量
UINT8 g_szSourceDir[500]  = {0};     // 需扫描的源目录
UINT8 g_szCtlFileDir[500]  = {0};     // 生成的控制文件的存放目录
UINT8 g_szSourceBakDir[500] = {0};     // 处理之后的源文件的备份目录
UINT8 g_szCtlFileName[256] = {0};     // 控制文件全路径名
UINT8 g_szDataStartTime[50] = {0};     // 所有源文件中数据记录的最早开始时间
UINT8 g_szDataEndTime[50]  = {0};     // 所有源文件中数据记录的最晚结束时间
UINT32 g_iRecordsSum     = 0;      // 已处理的记录的总条数

/**********************************************************************
* 功能描述: 读取控制文件中的开始时间、结束时间和记录条数
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期     版本号    修改人       修改内容
* ------------------------------------------------------------------
* 20151102     V1.0   Zhou Zhaoxiong      创建
********************************************************************/
void ReadCtlFile(void)
{
  UINT8 *pszHomePath = NULL; 
  FILE *fpCtlFile  = NULL;
  UINT8 szBuf[500] = {0}; 

  // 读取控制文件中的开始时间、结束时间和记录条数, 如果是当天程序重启, 则记录条数继续编号
  pszHomePath = getenv("HOME");
  if (pszHomePath == NULL)
  {
    return;
  }

  snprintf(g_szCtlFileDir, sizeof(g_szCtlFileDir)-1, "%s/zhouzhaoxiong/zzx/CtlFileCreate/CtlFile", pszHomePath); // 控制文件存放目录

  snprintf(g_szCtlFileName, sizeof(g_szCtlFileName)-1, "%s/CtlFile.txt", g_szCtlFileDir); // 控制文件全路径名

  fpCtlFile = fopen(g_szCtlFileName, "r");
  if (fpCtlFile != NULL)
  {
    fgets(szBuf, sizeof(szBuf), fpCtlFile);

    // 获取开始时间g_szDataStartTime
    if (TRUE != GetValueFromStr(1, MML_STR_TYPE, szBuf, g_szDataStartTime, '|', sizeof(g_szDataStartTime)))
    {
      printf("ReadCtlFile: exec GetValueFromStr to get g_szDataStartTime failed!\n");
      return;
    }

    // 获取结束时间g_szDataEndTime
    if (TRUE != GetValueFromStr(2, MML_STR_TYPE, szBuf, g_szDataEndTime, '|', sizeof(g_szDataEndTime)))
    {
      printf("ReadCtlFile: exec GetValueFromStr to get g_szDataEndTime failed!\n");
      return;
    }

    // 获取记录条数g_iRecordsSum
    if (TRUE != GetValueFromStr(3, MML_INT32_TYPE, szBuf, (UINT8 *)&g_iRecordsSum, '|', sizeof(g_iRecordsSum)))
    {
      printf("ReadCtlFile: exec GetValueFromStr to get g_iRecordsSum failed!\n");
      return;
    }

    fclose(fpCtlFile);
    fpCtlFile = NULL;

    printf("ReadCtlFile: DataStartTime=%s, DataEndTime=%s, RecordsSum=%d\n", g_szDataStartTime, g_szDataEndTime, g_iRecordsSum);
  }
}


/**********************************************************************
* 功能描述: 扫描源文件目录, 并写控制文件
* 输入参数: 无
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期     版本号    修改人       修改内容
* ------------------------------------------------------------------
* 20151102     V1.0   Zhou Zhaoxiong      创建
********************************************************************/
void ReadSrcFileAndWriteCt



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux下控制(统计)文件的生成的C代码实现

相关文章

  • 2017-05-28C++中抽象类和接口的区别介绍
  • 2017-05-28c++中八大排序算法
  • 2017-05-28c++ const引用与非const引用介绍
  • 2017-05-28C++设计模式编程中使用Bridge桥接模式的完全攻略
  • 2017-05-28探讨:C++中函数返回引用的注意事项
  • 2017-05-28c语言swap(a,b)值交换的4种实现方法
  • 2017-05-28深入C++四种强制类型转换的总结
  • 2017-05-28C/C++动态分配与释放内存的区别详细解析
  • 2017-05-28C++中求组合数的各种方法总结详解
  • 2017-05-28深入分析C语言分解质因数的实现方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言 以数据块的形式读写文件详解及实现代码
    • c语言打开文件函数使用方法
    • C++ 类访问控制的条件总结
    • 深入解析C++的WNDCLASS结构体及其在Windows中的应用
    • 浅析C语言头文件和库的一些问题
    • C++使用ADO实现存取图片的方法
    • C++中的vector容器对象学习笔记
    • C/C++字符串查找函数全面了解
    • 什么是工程/项目?
    • 深入理解c语言数组

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有