C/C++
文章平均质量分 76
yui
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
发布一个基于BER编码的CDR文件高速解码程序——destroy
<br />主要功能:理论上,该程序可以解码任何基于BER编码的CDR文件。不过,由于我在工作中只接触到Ericsson的某些版本的CDR,而且,用于解析CDR文件的描述文件来源于供应商,我的程序也只能识别来自于这个供应商的描述文件,所以,移植到其它厂商的环境下可能会产生一些问题。希望大家试用过后能够把各种情况反馈给我,最好能够把BER编码的CDR样本及其描述文件发给我,这样我就能够作为依据,完善这个程序了。<br /> <br />主要特点:高速!该程序比目前我在网上见到过的所有能够使用的同类型程序都要快原创 2010-06-29 21:09:00 · 2474 阅读 · 2 评论 -
在C语言中分割字符串
<br />C语言的库函数中,没有类似java中String类的split方法,可以把一个长字符串分割为字符串数组。不过,还是可以利用几个库函数,自己造出split的效果。虽然不像java那样支持分隔符为正则表达式,但一般情况下也够用了。<br /><br />#include <stdio.h>#include <stdlib.h>#include <string.h>/* * count the number of a character in a string */int co原创 2010-10-11 15:26:00 · 10732 阅读 · 1 评论 -
谁吃了你的硬盘空间?(2) 获取文件系统与文件信息
<br />/etc目录下有一个fstab文件,记录了磁盘分区的信息,挂载分区(mount)的时候,就需要读取这个文件的信息。另外,同一目录下,还有一个mtab文件,记录了当前已挂载的磁盘分区信息,每当mount、umount的时候,都会更新该文件,而df命令,读取的也正是这个mtab文件。这是Linux的情况,如果是Unix,文件名字可能有所不同,例如:<br /><br />操作系统 记录所有分区信息的文件 记录已挂载分区信息的文件<br />Linux /etc/fstab原创 2010-12-04 00:29:00 · 2415 阅读 · 1 评论 -
谁吃了你的硬盘空间?(3) eathd源代码与使用说明
<br />这是用C语言写成的一个适用于Linux的小工具,能够比较方便地算出单个或者全部挂载点(mount point)下的磁盘使用情况,包括显示该磁盘分区的设备类型、每一块的大小、总空间大小、预留给root用户的空间大小、已使用的空间大小、可用的空间大小、已使用的空间百分比,以及占用空间最多的10个目录。执行效果图如下:<br /><br /><br /><br />其实,组合使用Linux的Shell命令,df、du、find、sort、head等等,也能达致同样的功能。但是,我觉得C写的程序在执原创 2010-12-06 00:47:00 · 1889 阅读 · 1 评论 -
Windows + MinGW环境下使用libxml2 (1) 安装已编译包
<br />写在新年钟声即将敲响之际,瑾以此文纪念忙碌的2010<br /> <br />libxml2是一款开源的、跨平台的XML解析工具,在Windows下使用当然也不是问题,方法有两种,一是从下载已经编译好的二进制包,二是下载源代码自行编译。我们公司在Windows下的开发环境通常是MinGW + Code::Blocks,因此本文针对的是在此前提下编译和使用libxml2所遇到的问题。<br /> <br />已编译包下载:http://xmlsoft.org/sources/win32/<原创 2010-12-31 23:00:00 · 5189 阅读 · 0 评论 -
Windows + MinGW环境下使用libxml2 (2) 安装源代码包
<br />安装已编译包相对简单,安装源代码包则比较麻烦,编译过程可能会因为机器的差别而遇到各种各样的问题。不过,如果时间允许的话,编译源代码时遇到问题也不是坏事,可能会因此而发现项目中潜在的问题。<br /><br />libxml2在MinGW下编译需要用到msys,如果安装MinGW时选择默认选项,而不是全部安装的话,需要另外装上msys。本文编译的libxml2版本是2.7.7<br /><br />此外,如果你的zlib是当前MinGW网站下载的话,也就是版本号为1.2.3,那么请升级到1原创 2011-01-02 17:28:00 · 7542 阅读 · 2 评论 -
栈区、堆区、静态区、常量区、代码区演示
<br />这是老问题了,今天被同事问到,因此写了一个demo,代码如下:<br /> <br />#include <stdio.h>#include <string.h>#include <stdlib.h>#define MAX_LENGTH 32struct node { void *address; char area[16]; char desc[128];};typedef struct node Node;Node array[MAX原创 2010-11-18 18:40:00 · 1871 阅读 · 0 评论 -
MinGW编译支持openssl-1.0.0a的libcurl-7.21.3
<br />首先进入msys,编译openssl-1.0.0a,参考http://blog.youkuaiyun.com/feiyunw/archive/2010/05/16/5597546.aspx:<br /><br />./config -t<br />./config threads shared no-capieng<br />make depend<br />make<br />make test<br />make install<br /><br />libcurl-7.原创 2011-01-31 15:26:00 · 3456 阅读 · 0 评论 -
libcurl + libxml2 + soapUI开发SOAP客户端程序
<br />2010年,我写过一些使用gSOAP开发SOAP应用程序的系列文章,共8篇,详情请参考以前的博文:<br /><br />(1) 股票信息客户端程序<br /><br />(2) 股票信息服务端程序<br /><br />(3) iconv解决中文乱码问题<br /><br />(4) iconv解决中文乱码问题(续)<br /><br />(5) libxml2解析SOAP响应消息<br /><br />(6) 在HP-UX下编译gSOAP-2.7.17<br /><b原创 2011-02-01 10:47:00 · 5530 阅读 · 1 评论 -
libcurl通过HTTPS方式提交XML并解析响应信息
<br />不用太多解释,需要的自然有用。稍微有一丝难度的是某个地方用到回调函数,关于回调函数的概念,请百度。<br /><br />程序中用到XPath,不了解的可以看这里:<br />http://www.w3school.com.cn/xpath/index.asp<br /><br />还有这里:<br />http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html<br /><br />#include <stdio.h>原创 2011-02-10 16:10:00 · 5500 阅读 · 1 评论 -
C程序员如何申请加薪?呵呵
<br />如果老板会编译程序的话,发下面这段代码给他:<br /><br />#include <stdio.h>int main() { int a,b,c; for (c=0,b=0;a="BCCB{BC@BDBBCEFCCBDECFDDBBCBBBC@BBABABBBCBDBBBBBBBCBBBCBBBBACBABCBC@BBBDBBCBDBBBBBBBCBBBCBBBAAECI@BBCCCEEBBBBBCECBCBCDDBEBC@}BK@"[b++];)原创 2011-02-16 15:15:00 · 8685 阅读 · 38 评论 -
gcc-3.4编译google protocol buffer 2.4.0a
<br />gcc 3.4是比较老的编译器,用它来编译最新版protobuf 2.4.0a的话,可能会有如下错误:<br /><br />google/protobuf/descriptor.cc: In member function `virtual const google::protobuf::FieldDescriptor* google::protobuf::DescriptorBuilder::OptionInterpreter::AggregateOptionFinder::FindEx原创 2011-04-07 18:10:00 · 2757 阅读 · 0 评论 -
谁吃了你的硬盘空间?(1) 诡异的df算法
<br />df命令,接触过Linux/Unix的人都用过吧?不过为什么有的数字总是算不对呢?<br /><br />例如下面,/data那个文件系统,<br />total = 1404203532<br />used = 1203335028<br />available = 129539124<br />use% = 91%<br /><br />但是,total - used = 200868504 <> available<br />而且,used / total =原创 2010-11-30 23:47:00 · 4934 阅读 · 2 评论 -
函数指针数组应用实例
<br />从概念上分析,函数指针数组首先是一个数组,数组的元素都是函数指针,而函数指针又是一个指针,但它不是指向普通数据类型或者结构体的指针,而是一个指向函数的指针。<br /> <br />以下代码的背景是为两组字符编码转换函数做单元测试,使用函数指针数组可以使程序可读性更强,否则,就像末尾注释的那段那样,需要冗长的代码代替。<br /> <br />#include <stdio.h>#include <stdlib.h>#include <string.h>#define ENCODIN原创 2010-09-28 01:23:00 · 2166 阅读 · 0 评论 -
使用gSOAP开发实例(8) Phase 1 完结篇 自定义header实现用户名令牌认证(Usernametoken Authentication)
<br />上一节介绍了怎样实现基本认证(Basic Authentication,以下简称basic方式),望文生义,也就是最简单的用户验证方式,本节稍微深入一些,介绍用户名令牌认证(Usernametoken Authentication,以下简称usernametoken方式)。<br /> <br />Usernametoken方式与basic方式不同的地方,在于后者会把用户名和密码以摘要(digest)的形式,置于HTTP信息头,而前者则把用户名以明文的形式、密码以明文或者摘要的形式,嵌入到一段X原创 2010-09-03 23:19:00 · 14397 阅读 · 8 评论 -
使用libz和libbz2的API在项目中集成gzip和bzip2功能
<br />libz提供了一套与gzip有关的API,libbz2提供了一套与bzip2有关的API。我们可以利用其中几个常用的函数,在自己的项目中实现压缩、解压缩功能。这两个库文件一般在linux系统中都会有,如果没有,可以分别到以下网址下载其源代码:<br /> <br />gzip: http://www.gzip.org/<br />bzip2: http://www.bzip.org/index.html<br /> <br />libz最有用的函数有四个:<br /> <br />gzFile原创 2010-07-01 21:17:00 · 8055 阅读 · 2 评论 -
使用gSOAP开发实例(1) 股票信息客户端程序
<br />gSOAP是一套开源的C/C++软件工具包,使用它能够很方便地开发SOAP网页服务和基于XML的应用程序,就像JAVA里面的axis。<br /> <br />首先,我们需要从以下地址下载最新版本的gSOAP 2.7.17:<br />https://sourceforge.net/projects/gsoap2/files/<br /> <br />其次,gSOAP依赖于Bison和Flex,编译gSOAP的时候会用到,如果没有,从这里下载:<br />Bison:http://www.gnu原创 2010-07-08 21:28:00 · 8360 阅读 · 11 评论 -
strcat在某种特定条件下的优化
strcat是C语言一个基本的字符串操作函数,它的源代码一般是这样的。 char *strcat(char *dest, const char *src){ char *tmp = dest; while (*dest) dest++; while ((*dest++ = *src++) != /0); return tmp;} 由此可见,s原创 2010-05-22 15:43:00 · 2316 阅读 · 4 评论 -
使用gSOAP开发实例(2) 股票信息服务端程序
<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />上文已经交待了gSOAP在Linux环境下的编译方法和客户端的实例程序,本文继续讲解其服务端程序的开发。由于不可能原创 2010-07-19 20:52:00 · 6333 阅读 · 7 评论 -
利用多线程技术优化文件读写转换处理
在电信系统CDR处理中,有大量的原始话单数据需要被读取、转换后再写入新的文件。如果使用C语言实现,一个复杂的读写转换处理过程可以分为以下几步: 从源文件中读取一块数据建立相应的数据结构并将读取的数据,以及定义源文件数据格式的配置文件,一并映射到该结构中,如果是线性的数据结构,例如NSN默认的CDR文件,一般采用单向链表,如果是非线性的数据结构,例如Ericsson默认的CDR文件,原创 2010-05-22 15:50:00 · 3617 阅读 · 0 评论 -
使用gSOAP开发实例(3) iconv解决中文乱码问题
<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />我开发SOAP应用程序已经有一定的经验,在C/C++环境下一般使用gSOAP,而在Java环境下一般采用axis2原创 2010-07-21 22:26:00 · 5378 阅读 · 3 评论 -
使用gSOAP开发实例(4) iconv解决中文乱码问题(续)
<br />电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。<br /> <br />上一节,讲解了用iconv解决gSOAP输出的中文文本乱码的问题。在本节中,我们用一个天气预报客户端的例子,简述一原创 2010-07-23 22:05:00 · 6090 阅读 · 2 评论 -
使用gSOAP开发实例(5) libxml2解析SOAP响应消息
电信provisioning系统中,常常需要与远程服务器实时交换一些数据,以完成用户的请求。由于简单对象访问协议(Simple Object Access Protocol, SOAP)的流行,许多涉及到第三方的应用,我们一般都比较乐意使用SOAP来开发。不过,由于可能涉及到公司的机密,本系列教程的开发实例尽量采用在网上已经公开的Web Service资源。前面四节的教程,分别采用了股票信息和天气预报的例子。而这两个实例有一个共同点,SOAP响应消息的数据结构相对简单,只需要按拟定的次序,事先约定返回数据代原创 2010-07-26 22:25:00 · 8400 阅读 · 3 评论 -
使用getopt_long()从命令行获取参数
<br />众所周知,C程序的主函数有两个参数,其中,第一个参数是整型,可以获得包括程序名字的参数个数,第二个参数是字符数组指针或字符指针的指针,可以按顺序获得命令行上各个字符串参数。其原形是:<br />int main(int argc, char *argv[]);<br />或者<br />int main(int argc, char **argv);<br /> <br />如果有一个解析CDR的程序,名叫destroy,负责将一个二进制格式的CDR文件转换为文本文件,输出的文本的样式由另外一个原创 2010-06-13 21:24:00 · 11400 阅读 · 1 评论 -
使用gSOAP开发实例(6) 在HP-UX下编译gSOAP-2.7.17
<br /><br />使用gSOAP开发实例(6) 在HP-UX下编译gSOAP-2.7.17<br /> <br />gSOAP号称是跨平台的工具包,不过毕竟是属于g字头的,如果没有了一系列GNU组件的支持,在其他类Unix系统编译就会遇到不少困难。<br /> <br />gSOAP的README说得也不是很清楚,只提到依赖于这些组件:<br />1. Automake tools (makeand GNU m4) to configure and build<br />2. Bisonh原创 2010-08-09 17:37:00 · 6373 阅读 · 1 评论 -
使用gSOAP开发实例(7) 基于HTTPS的基本认证(Basic Authentication)
<br /><br />经过前几节的讲解,相信大家都能够熟练地开发gSOAP应用程序,甚至跨平台也不是问题。但是,诸如stock、weather、exchange这些应用都是面向大众提供的免费资源,不是企业级的应用,绝大多数都不需要用户认证。而那些商业化的应用却恰恰相反,大部分都要求客户端提供这样那样的验证。<br /> <br />由于有认证的免费资源实在难找,我只好把公司正在使用的一个服务的wsdl裁剪一下,拿到这里作为实例,裁剪后的wsdl只保留一个echo接口,顾名思义,就是客户端送什么字符串上来,原创 2010-08-17 12:23:00 · 10906 阅读 · 2 评论 -
gcc-3.4编译strace-4.6
<br />gcc 3.4编译strace-4.6的话,会遇到这样的错误:<br /><br />block.c: In function `block_ioctl':<br />block.c:271: error: `BLKTRACESTOP' undeclared (first use in this function)<br />block.c:271: error: (Each undeclared identifier is reported only once<br />b原创 2011-04-29 20:15:00 · 1438 阅读 · 0 评论
分享