对配置文件读取操作的测试 
为了对编写的配置文件读取操作程序进行测试,定义了员工信息结构体和雇主信息结构体,分别用于存放从配置文件中读取到的员工信息和雇主信息。在main函数中将获取到的信息打印出来,以此来检查程序操作的正确性。

六、C程序实现 
本程序命名为“GetConfig.c”,具体代码如下:

/**********************************************************************
* 版权所有 (C)2015, Zhou Zhaoxiong。
*
* 文件名称:GetConfig.c
* 文件标识:无
* 内容摘要:演示Linux下配置文件的读取方法
* 其它说明:无
* 当前版本:V1.0
* 作    者:Zhou Zhaoxiong
* 完成日期:20150507
*
**********************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

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

// 员工信息结构体定义
typedef struct
{
    UINT8  szEmployeeName[128];    // 员工姓名
    INT32  iEmployeeAge;           // 员工年龄
} T_EmployeeInfo;

// 雇主信息结构体定义
typedef struct
{
    UINT8  szEmployerName[128];    // 雇主姓名
    INT32  iEmployerAge;           // 雇主年龄
} T_EmployerInfo;

// 函数声明
void GetCompletePath(UINT8 *pszConfigFileName, UINT8 *pszWholePath);
void GetStringContentValue(FILE *fp, UINT8 *pszSectionName, UINT8 *pszKeyName, UINT8 *pszOutput, UINT32 iOutputLen);
void GetConfigFileStringValue(UINT8 *pszSectionName, UINT8 *pszKeyName, UINT8 *pDefaultVal, UINT8 *pszOutput, UINT32 iOutputLen, UINT8 *pszConfigFileName);
INT32 GetConfigFileIntValue(UINT8 *pszSectionName, UINT8 *pszKeyName, UINT32 iDefaultVal, UINT8 *pszConfigFileName);
INT32 main();

/**********************************************************************
* 功能描述:主函数
* 输入参数:无
* 输出参数:无
* 返 回 值:无
* 其它说明:无
* 修改日期         版本号         修改人            修改内容
* ---------------------------------------------------------------
* 20150507        V1.0     Zhou Zhaoxiong          创建
***********************************************************************/
INT32 main()
{
    T_EmployeeInfo tEmployeeInfo = {0};
    T_EmployerInfo tEmployerInfo = {0};

// 获取并打印员工信息
    // 获取员工姓名
    GetConfigFileStringValue("EMPLOYEEINFO", "EmployeeName", "", tEmployeeInfo.szEmployeeName, sizeof(tEmployeeInfo.szEmployeeName), "Config.ini");

// 获取员工年龄
    tEmployeeInfo.iEmployeeAge = GetConfigFileIntValue("EMPLOYEEINFO", "EmployeeAge", 20, "Config.ini");
    if (tEmployeeInfo.iEmployeeAge == -1)  // 判断获取到的年龄是否正确
    {
        printf("Get EmployeeAge failed!\n");
        return -1;
    }

// 打印读取到的员工姓名和年龄
    printf("EmployeeName is %s, EmployeeAge is %d\n", tEmployeeInfo.szEmployeeName, tEmployeeInfo.iEmployeeAge);

// 获取并打印雇主信息
    // 获取雇主姓名
    GetConfigFileStringValue("EMPLOYERINFO", "EmployerName", "", tEmployerInfo.szEmployerName, sizeof(tEmployerInfo.szEmployerName), "Config.ini");

// 获取员工年龄
    tEmployerInfo.iEmployerAge = GetConfigFileIntValue("EMPLOYERINFO", "EmployerAge", 30, "Config.ini");
    if (tEmployerInfo.iEmployerAge == -1)  // 判断获取到的年龄是否正确
    {
        printf("Get EmployerAge failed!\n");
        return -1;
    }

// 打印读取到的员工姓名和年龄
    printf("EmployerName is %s, EmployerAge is %d\n", tEmployerInfo.szEmployerName, tEmployerInfo.iEmployerAge);

return 0;              
}

/**********************************************************************
* 功能描述: 获取配置文件完整路径(包含文件名)
* 输入参数: pszConfigFileName-配置文件名
             pszWholePath-配置文件完整路径(包含文件名)
* 输出参数: 无
* 返 回 值: 无
* 其它说明: 无
* 修改日期        版本号         修改人       修改内容
* ------------------------------------------------------------------
* 20150507       V1.0     Zhou Zhaoxiong     创建
********************************************************************/  
void GetCompletePath(UINT8 *pszConfigFileName, UINT8 *pszWholePath)
{
    UINT8 *pszHomePath      = NULL;
    UINT8  szWholePath[256] = {0};

// 先对输入参数进行异常判断
    if (pszConfigFileName == NULL || pszWholePath == NULL)
    {
        printf("GetCompletePath: input parameter(s) is NULL!\n");
        return;
    }

pszHomePath = (UINT8 *)getenv("HOME");     // 获取当前用户所在的路径
    if (pszHomePath == NULL)
    {
        printf("GetCompletePath: Can't find home path!\n");
        return;
    }

// 拼装配置文件路径
    snprintf(szWholePath, sizeof(szWholePath)-1, "%s/zhouzx/GetConfig/%s", pszHomePath, pszConfigFileName);

strncpy(pszWholePath, szWholePath, strlen(szWholePath));
}

/**********************************************************************
* 功能描述: 获取具体的字符串值
* 输入参数: fp-配置文件指针
             pszSectionName-段名, 如: GENERAL
             pszKeyName-配置项名, 如: EmployeeName
             iOutputLen-输出缓存长度
* 输出参数: pszOutput-输出缓存
* 返 回 值: 无
* 其它说明: 无
* 修改日期         版本号        修改人       修改内容
* ------------------------------------------------------------------
* 20150507       V1.0     Zhou Zhaoxiong     创建
********************************************************************/
void GetStringContentValue(FILE *fp, UINT8 *pszSectionName, UINT8 *pszKeyName, UINT8 *pszOutput, UINT32 iOutputLen)
{
    UINT8  szSectionName[100]    = {0};
    UINT8  szKeyName[100]        = {0};
    UINT8  szContentLine[256]    = {0};
    UINT8  szContentLineBak[256] = {0};
    UINT32 iContentLineLen       = 0;
    UINT32 iPositionFlag         = 0;

// 先对输入参数进行异常判断
    if (fp == NULL || pszSectionName == NULL || pszKeyName == NULL || pszOutput == NULL)
    {
        printf("GetStringContentValue: input parameter(s) is NULL!\n");
        return;
    }

sprintf(szSectionName, "[%s]", pszSectionName);
    strcpy(szKeyName, pszKeyName);

while (feof(fp) == 0)
    {
        memset(szContentLine, 0x00, sizeof(szContentLine));
        fgets(szContentLine, sizeof(szContentLine), fp);      // 获取段名

// 判断是否是注释行(以;开头的行就是注释行)或以其他特殊字符开头的行
        if (szContentLine[0] == ';' || szContentLine[0] == '\r' || szContentLine[0] == '\n' || szContentLine[0] == '\0')

http://imgur.com/tdLF6vw
http://imgur.com/zK8qhtU
http://imgur.com/9dTn3wL
http://imgur.com/5086nB9
http://imgur.com/yiU01Pi
http://imgur.com/0Oo6DzH
http://imgur.com/1HfzOh7
http://imgur.com/u1pPrEQ
http://imgur.com/2ZnGCaW
http://imgur.com/M7aVa2k
http://imgur.com/8s7s1Ok
http://imgur.com/UhrisWW
http://imgur.com/ntqTPb5
http://imgur.com/OULlSoT
http://imgur.com/0vIwof8
http://imgur.com/xc9GdRX
http://imgur.com/lvbjWXh
http://imgur.com/sBlGa3J
http://imgur.com/Z7vtYJx
http://imgur.com/eV60mcX
http://imgur.com/YtOe0Ce
http://imgur.com/Jex7kOM
http://imgur.com/JieLXHo
http://imgur.com/q176V61
http://imgur.com/AaQJm8O
http://imgur.com/9bISlsY
http://imgur.com/H36Kw3r
http://imgur.com/vDSKVhc
http://imgur.com/ty2Bdb2
http://imgur.com/jD2Yp22
http://imgur.com/HitgKm8
http://imgur.com/UnTmGTe
http://imgur.com/Wg6awJs
http://imgur.com/WIkUzF4
http://imgur.com/oUvsq9U
http://imgur.com/Hmgj1kr
http://imgur.com/haAjd0F
http://imgur.com/x4Gi5mv
http://imgur.com/2RL3khF
http://imgur.com/HAjpxTm
http://imgur.com/xcNo2WG
http://imgur.com/Ggr8ASD
http://imgur.com/UrRZbAN
http://imgur.com/eRi5ZRm
http://imgur.com/lSw5vpJ
http://imgur.com/STwZN5Q
http://imgur.com/46iaslC
http://imgur.com/2OJWDsi
http://imgur.com/vhhCRKF
http://imgur.com/ru7CRuG
http://imgur.com/ePX9iZx
http://imgur.com/Kmffhoz
http://imgur.com/24J5VVT
http://imgur.com/s9Tq6SD
http://imgur.com/3bo7v12
http://imgur.com/9WC81Zp
http://imgur.com/BAMJo0M
http://imgur.com/Lm8PtM9
http://imgur.com/9t18lrw
http://imgur.com/ZSgDwqK
http://imgur.com/tg02XEd
http://imgur.com/4pt5hRq
http://imgur.com/YtbCHAf
http://imgur.com/CV3BfUb
http://imgur.com/N9ddD0f
http://imgur.com/G6yH3NE
http://imgur.com/o0ZFXqG
http://imgur.com/r07vDv5
http://imgur.com/ypux4pl
http://imgur.com/WnyH8Rp
http://imgur.com/YaA4g1m
http://imgur.com/NOYe5wD
http://imgur.com/ROjZ0b8
http://imgur.com/wt6bj6e
http://imgur.com/cMd8RgJ
http://imgur.com/ZzIdrM6
http://imgur.com/muEAlxI
http://imgur.com/2mrgAyQ
http://imgur.com/wrO4q05
http://imgur.com/oMPXzyU
http://imgur.com/5RCEdcp
http://imgur.com/45n4dlJ
http://imgur.com/QfRZjYo
http://imgur.com/tw5ba7z
http://imgur.com/7P7IX7S
http://imgur.com/aZFHWa0
http://imgur.com/imPyCXI
http://imgur.com/7p6uDb0
http://imgur.com/WuzPNja
http://imgur.com/T1SMaoU
http://imgur.com/5xfJ5my
http://imgur.com/4siyWT8
http://imgur.com/8DVjlQ2
http://imgur.com/HUeBXiO
http://imgur.com/UvPTQfj
http://imgur.com/lt8RewD
http://imgur.com/zZBr2L8
http://imgur.com/5rIH25w
http://imgur.com/sIifPmm
http://imgur.com/Nb0TZx5
http://imgur.com/805T6MA
http://imgur.com/Q1wWe83
http://imgur.com/qzFF41o
http://imgur.com/H49hSHt
http://imgur.com/Zcl3O9Z
http://imgur.com/xht6tjg
http://imgur.com/Esnk4dA
http://imgur.com/Ns6Rwan
http://imgur.com/ZmpDac6
http://imgur.com/fRvLce9
http://imgur.com/nnoRT5q
http://imgur.com/fxrSiI0
http://imgur.com/SRFnC73
http://imgur.com/LaazeEq
http://imgur.com/UAXaaak
http://imgur.com/ILCO1nJ
http://imgur.com/u5orf8C
http://imgur.com/jRCQjGm
http://imgur.com/rrGR1lD
http://imgur.com/tGnprFz
http://imgur.com/uVmBBd8
http://imgur.com/NzBri4P
http://imgur.com/lep9EiN
http://imgur.com/TS1nODy
http://imgur.com/C5vv9V9
http://imgur.com/qhPl37P
http://imgur.com/f3eI3Ij
http://imgur.com/iCxz1dD
http://imgur.com/Lq2qu1C
http://imgur.com/TA4AD9K
http://imgur.com/lTIbEWv
http://imgur.com/P9p9Y7Y
http://imgur.com/5KV2dsP
http://imgur.com/elKDs0E
http://imgur.com/gO4J2oU
http://imgur.com/ho3yQqw
http://imgur.com/86B2gtc
http://imgur.com/OwqqnOm
http://imgur.com/ebkDkDk
http://imgur.com/Gla6nYY
http://imgur.com/hBH4mbZ
http://imgur.com/4F65ugU
http://imgur.com/NDE064F
http://imgur.com/YC9xyB6
http://imgur.com/qOuAFaL
http://imgur.com/Y6SvIBn
http://imgur.com/4HZKe8z
http://imgur.com/QGxovd1
http://imgur.com/SQjUF6S
http://imgur.com/B8QW7eI
http://imgur.com/0ouu3wP
http://imgur.com/wVFDd0g
http://imgur.com/iJ7hq53
http://imgur.com/Vx2Cr5a
http://imgur.com/p9KxzvC
http://imgur.com/3fodfVw
http://imgur.com/2rGXoHs
http://imgur.com/VpeZGvH
http://imgur.com/p48fsh3
http://imgur.com/VzRNUEl
http://imgur.com/228eNTA
http://imgur.com/bA5sz45
http://imgur.com/mXAaxoB
http://imgur.com/dY5ZXpE
http://imgur.com/h8VHxjJ
http://imgur.com/rREY2pz
http://imgur.com/GEO7HTZ
http://imgur.com/iND8H5B
http://imgur.com/cbldHaV
http://imgur.com/GMNYBUH
http://imgur.com/b5YxePU
http://imgur.com/iKxrQmU
http://imgur.com/v8hRCPW
http://imgur.com/DdPuVr6
http://imgur.com/OTI6kwG
http://imgur.com/PfRjQqQ
http://imgur.com/kzDl71s
http://imgur.com/QuzfYK6
http://imgur.com/hLWRXSY
http://imgur.com/7CTsZLm
http://imgur.com/ziI2qQV
http://imgur.com/MdMaXZF
http://imgur.com/OgVTIvu
http://imgur.com/KB2eDF3
http://imgur.com/Uj3AAsr
http://imgur.com/m7yKwp1
http://imgur.com/Qn1tzRL
http://imgur.com/zcZs72o
http://imgur.com/YzAaE0g
http://imgur.com/AUrJR0F
http://imgur.com/SesVTav
http://imgur.com/zlZ6o5l
http://imgur.com/lciWO2t
http://imgur.com/m4UAavO
http://imgur.com/ZREPlJg
http://imgur.com/9bwQSOM
http://imgur.com/et3Fi5B
http://imgur.com/awBmr2C
http://imgur.com/H5RHng6
http://imgur.com/cf24LY2
http://imgur.com/sQqoHSj
http://imgur.com/r5dFI2B
http://imgur.com/gys7ZCO
http://imgur.com/N8WCHu5
http://imgur.com/iumdOch
http://imgur.com/7DLX1LC
http://imgur.com/qDum6AE
http://imgur.com/VcAC5w3
http://imgur.com/Lsc0iOd
http://imgur.com/7nC4tCM
http://imgur.com/gAvTj2b
http://imgur.com/qMvS0Jy
http://imgur.com/56fVHJj
http://imgur.com/yLpXgJG
http://imgur.com/eMUVR6X
http://imgur.com/ekZKhq2
http://imgur.com/KWuxpk0
http://imgur.com/K0kL3hK
http://imgur.com/kGxFHi0
http://imgur.com/hgBTL9l
http://imgur.com/1GLUj49
http://imgur.com/0XpZA7U
http://imgur.com/A42Geaj
http://imgur.com/0OVwLOK
http://imgur.com/lKTX7zv
http://imgur.com/ztwgFtX
http://imgur.com/0UrkI1X
http://imgur.com/hDBDsjS
http://imgur.com/tX8HgBj
http://imgur.com/LPY6Yrt
http://imgur.com/L9RMG87
http://imgur.com/qfOXV9q
http://imgur.com/dA7qvaC
http://imgur.com/zkG134v
http://imgur.com/DN0YC4J
http://imgur.com/LLvhYEC
http://imgur.com/RotjC33
http://imgur.com/sMZrYy4
http://imgur.com/34Trheo
http://imgur.com/4z4tIno
http://imgur.com/tsDRaYE
http://imgur.com/qOum2yo
http://imgur.com/lHOtm79
http://imgur.com/20oLG44
http://imgur.com/mdvnljt
http://imgur.com/bJzGT2b
http://imgur.com/QYOtABy
http://imgur.com/SnChiXq
http://imgur.com/aTUMcNz
http://imgur.com/9ZflwtJ
http://imgur.com/io2Pz6i
http://imgur.com/Xwgw8nh
http://imgur.com/K2GbHBx
http://imgur.com/Pvxsi2N
http://imgur.com/yX2kkMP
http://imgur.com/slfnTJN
http://imgur.com/rEFPFRQ
http://imgur.com/4mEQHrH
http://imgur.com/1LgITf0
http://imgur.com/Il4MOc3
http://imgur.com/F2Y3ge4
http://imgur.com/nEnAQva
http://imgur.com/wIyjsmH
http://imgur.com/dYxjyUD
http://imgur.com/kTO9xkr
http://imgur.com/4RWx2Nq
http://imgur.com/LZx3Rpv
http://imgur.com/RHBuDbq
http://imgur.com/TnZWaD0
http://imgur.com/eEOKrvg
http://imgur.com/8VOQanp
http://imgur.com/mP5oE3T
http://imgur.com/7k3Iple
http://imgur.com/RiZFRr4
http://imgur.com/ydm0mcq
http://imgur.com/h831MkE
http://imgur.com/yW5DDK0
http://imgur.com/GpauJiF
http://imgur.com/wxGq7pV
http://imgur.com/PIjh9ET
http://imgur.com/yPnxEdy
http://imgur.com/zuusyz8
http://imgur.com/o0MRpr7
http://imgur.com/d3Mz5gk
http://imgur.com/Ii0EUm9
http://imgur.com/62WPwQA
http://imgur.com/AkCBipM
http://imgur.com/V4BzDtc
http://imgur.com/osTqSPe
http://imgur.com/ydapS0y
http://imgur.com/OBNBNhX
http://imgur.com/jVwb4h1
http://imgur.com/hFU7pMU
http://imgur.com/RIvbL0X
http://imgur.com/bHKcOZM
http://imgur.com/veCPUQY
http://imgur.com/jYz5Pav
http://imgur.com/jMDRdLV
http://imgur.com/IxLHVHS
http://imgur.com/FtaKmiw
http://imgur.com/15bHvbh
http://imgur.com/LelvM7h
http://imgur.com/HaPkf53
http://imgur.com/MFYmwIn
http://imgur.com/CwAuC8u
http://imgur.com/Z2435US
http://imgur.com/6qu8Vx1
http://imgur.com/pWS07XF
http://imgur.com/HWOyMVr
http://imgur.com/ykE2MUA
http://imgur.com/owFtW2m
http://imgur.com/HMyslXh

细谈在非WIFI状态下显示GIF缩略图效果相关推荐

  1. UIButton在不同状态下显示不同背景色

    参考自:原文地址(内容与原文并无区别,只是自己以后方便使用整理了一下) 1.UIButton的background是不支持在针对不同的状态显示不同的颜色. 2.UIButton的backgroundI ...

  2. 工作日记---android lockscreen.java 在lock状态下显示charing和alarm

    这算是从事android开发独立解决的第二个bug.用了大概有1天半时间. 根据以前的经验,这是一个较简单的问题,关键是定位出显示charging的条件. 下面分析一下自己的工作过程,以及时间耗用比较 ...

  3. 【人脸识别】FROM:提升遮挡状态下的人脸识别效果

    论文题目:<End2End Occluded Face Recognition by Masking Corrupted Features> 论文地址:https://arxiv.org/ ...

  4. 延长计算机屏幕显示时间,非充电状态下延长计算机使用时间的小诀窍!

    耐久性是设备的重要性能指标之一.它衡量设备的工作时间.对于很来说,笔记本电脑的电池寿命并不是特别重要,因为在使用笔记本电脑时,旁边有一个电源线接口,但是对于那些经常出差旅行的人来说,电池寿命变得非常重 ...

  5. android熄屏微信收到原理,求助,如何才能在息屏状态下显示收到的微信消息内容?...

    5楼搞错了...重发给你. 本帖最后由 散闲游人 于 2018-4-14 14:18 编辑 如P20的设置和手机管家和m10是一样的,请参考如下设置: 一:点击手机管家,点启动管理,以进入手动管理为例 ...

  6. Windows非开机状态下尝试进入注册表解决Fixing(E:) Stage问题

    实现步骤 一 开始界面,出现磁盘自检过程 二 重启并自动修复 自动修复失败后出现高级选项界面,选择高级选项 三 进入选项界面,选择疑难解答 四 进入疑难解答界面选择高级选项 五 进入高级选项界面,选择 ...

  7. 【备忘】visual studio调试状态下显示lua调用栈

    编辑文件:[VS安装目录]/Common7/Packages/Debugger/autoexp.dat,在文件最后[hresult]之上的空白插入以下代码,就可以在 visual studio调试的时 ...

  8. Java学习系列(十五)Java面向对象之细谈线程、线程通信(下)

    竞争资源(共享资源):如果有多条线程需要并发访问.并修改某个对象,该对象就是"竞争资源".为了避免多个线程"自由竞争"修改共享资源所导致的不安全问题. 线程同步 ...

  9. unity3d编辑器界面扩展,编辑状态下显示选择对象的所有脚本组件代码内容

    转载自:http://blog.csdn.net/andyhebear/article/details/47833383 using UnityEngine; using UnityEditor; u ...

最新文章

  1. Struts和Spring使用的模板初探
  2. Weblogic配置故障转移
  3. [Mac技巧]Mac下显示隐藏文件
  4. [独库骑行之我们路过沙漠]塔克拉玛干的边缘
  5. Beanstalked的初步了解和使用(包括利用beanstalkd 秒杀消息队列的实现)
  6. YOLO:实时目标检测
  7. Mybatis mapper代理SqlMapConfig.xml配置详解
  8. c 如何调用c语言程序设计,c语言程序设计_函数调用c语言程序设计_函数调用.ppt...
  9. Caffe傻瓜系列(6):solver及其配置
  10. Linux 下修改数据库密码
  11. APP消息推送-个推java端实现
  12. 无线网络服务器网络异常,无线网络连接上但上不了网怎么解决
  13. uniapp——如何在项目中使用阿里字体图标
  14. 购买重疾险是不是都要先去体检?千万不要!
  15. 逍遥书生服务器啥时候维护完毕,《逍遥西游2》12月8日服务器维护公告
  16. web应用登录,报错空指针java.lang.NullPointerException问题--可能的解决方式
  17. 判断清浊音 matlab,基于MATLAB的语音信号的清浊音分析.doc
  18. 恒生电子(杭州、武汉、上海、、、)来实习来春招
  19. error C2059: 语法错误:“::”
  20. hdfs基本操作-python接口

热门文章

  1. 蒙特卡罗算法与拉斯维加斯算法比较
  2. SqlServer_查看SQLServer版本信息
  3. mousedown和click冲突处理方法
  4. 青少儿编程- App Inventor程序实例讲解:按钮
  5. 关于iframe嵌套页面传值
  6. 集成灶十大名牌排行榜,好口碑高性价集成灶前10强推荐
  7. 盐城教师+职称计算机,盐城中小学教师晋升中高级职称人员.DOC
  8. 【Linux】一篇文章搞定 CPP模拟实现TCP协议下socket通信
  9. C语言机票销售系统[2023-01-04]
  10. 云+5G+AI,华为是如何布局在线教育的?