C/C++
AAA20090987
一个喜欢编程,喜欢C 的人
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言判断文件夹或者文件是否存在的方法
C语言判断文件夹或者文件是否存在的方法方法一:access函数判断文件夹或者文件是否存在函数原型: int access(const char *filename, int mode);所属头文件:#include filename:可以填写文件夹路径或者文件路径mode:0 (F_OK) 只判断是否存在 2 (R_OK) 判断写转载 2014-03-31 18:04:56 · 1503 阅读 · 0 评论 -
C++:在程序中获取全球唯一标识号(GUID或UUID)
Windows:使用CoCreateGuid函数(GUID)#include #include #define GUID_LEN 64int main(int argc, char* argv[]){ char buffer[GUID_LEN] = { 0 }; GUID guid; if ( CoCreateGuid(&guid) ) { fprintf(stderr,原创 2013-02-01 15:49:49 · 11779 阅读 · 1 评论 -
libpcap使用
libpcap使用libpcap是一个网络数据包捕获函数库,功能非常强大,Linux下著名的tcpdump就是以它为基础的。今天我们利用它来完成一个我们自己的网络嗅探器(sniffer)首先先介绍一下本次实验的环境:Ubuntu 11.04,IP:192.168.1.1,广播地址:192.168.1.255,子网掩码:255.255.255.0可以使用下转载 2013-04-25 16:48:51 · 1749 阅读 · 0 评论 -
用Doxygen+Graphviz生成函数调用流程图
上面这张图是用Doxygen+Graphviz从netcat的源代码生成的函数调用关系图。这种图有助于阅读源代码。还可以生成class(或者struct)之间的关系图,如下所示: 现在介绍如何使用Doxygen和Graphviz生成这种图:1. 下载并安装Doxygen和Graphviz。直接Google就可以找到主页,下载安装即可。2. 记住Gra转载 2013-04-19 21:15:17 · 3017 阅读 · 1 评论 -
C++分割字符串
#include #include #include using namespace std;/*功能:字符串分割返回值: 分割后的字符串数组参数:str:原字符串pattern:分隔符*/vector split(const string &str, const string &pattern){ int current, pos, patlen; vector r原创 2013-05-22 10:57:40 · 1314 阅读 · 0 评论 -
windows下开发PHP扩展(无需Cygwin)
第一步:准备1、php源码包和windows下的二进制包,以及安装Visual C++,并把Microsoft Visual Studio/Common/MSDev98/Bin的绝对路径添加到windows环境变量2、解压源码包到d:/php_src3、进入d:/php_src/ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“linvo”转载 2013-05-29 15:33:22 · 1335 阅读 · 0 评论 -
一个字符串替换算法
功能:将一段字符串中特定的子字符串替换成指定字符串数组中的的字符串详情请见程序中的注释。#include #include #include using namespace std;/*功能:将一段字符串中特定的子字符串替换成指定字符串数组中的的字符串content:原来的字符串(原文)repStr:原文中要被替换成新字符串的旧字符串(关键字)vec:替换旧字符串的新原创 2013-03-31 22:31:17 · 3025 阅读 · 0 评论 -
glog功能介绍
本文是根据自己的理解翻译组织了glog的manual,鉴于自身的理解能力和英语水平,可能存在谬误,欢迎大家指出!英文原文见http://google-glog.googlecode.com/svn/trunk/doc/glog.html 1. 概述 Google glog是一个基于程序级记录日志信息的c++库,编程使用方式与c++的stream操作类似,例:转载 2013-07-06 16:26:20 · 1797 阅读 · 0 评论 -
LINUX C语言:程序运行时动态加载库函数
PS:相关知识请自己去看man手册,这里只给出一个实例,及创建这个实例的步骤。1:创建test.h, test.c文件//test.h#ifndef TEST_H_#define TEST_H_#include void PrintHello();int Add(int a, int b);#endif//test.cpp#include "test.h原创 2013-02-02 11:12:46 · 4967 阅读 · 0 评论 -
Winsock入门编程示例代码
Winsock入门,socket编程,网络 客户端代码:[cpp] view plaincopy#include #include #include #pragma comment(lib,"Ws2_32.lib") #define BUFFER_SIZE 50 /*客户端代码转载 2013-07-22 09:37:48 · 2494 阅读 · 0 评论 -
Linux中C语言open函数打开或创建文件详细讲解
头文件:#include #include #include 函数原型:int open( const char * pathname, int flags);int open( const char * pathname,int flags, mode_t mode);作用:以各种方式打开文件返回值:返回打开的文件句柄,-1 打开失败函数说明 参数pa转载 2013-08-28 13:53:06 · 10589 阅读 · 0 评论 -
某高人实现的红黑树模板类
某高人实现的红黑树模板类原创 2013-12-26 11:47:32 · 2401 阅读 · 0 评论 -
Eclipse快捷键 10个最有用的快捷键
Eclipse中10个最有用的快捷键组合 一个Eclipse骨灰级开发者总结了他认为最有用但又不太为人所知的快捷键组合。通过这些组合可以更加容易的浏览源代码,使得整体的开发效率和质量得到提升。 1. ctrl+shift+r:打开资源 这可能是所有快捷键组合中最省时间的了。这组快捷键可以让你打开你的工作区中任何一个文件,而你只需要按下文件名或mask名中的前几个转载 2014-01-21 14:06:39 · 903 阅读 · 0 评论 -
nginx队列模块的分析和使用
nginx队列模块的设计挺精妙的,也算是用一个C语言实现泛型编译的典型例子了,我将其独立出来,写上注释和测试例子,方便以后查看。原创 2013-12-16 15:14:01 · 2365 阅读 · 0 评论 -
linux更改执行进程名称
前几天网上搜索如何更改执行进程的进程名称,并没有得到一个好的答案.刚刚阅读nginx的源码,发现这样一种解决方案,记录之:网上说的比较多的是直接更改argv[0],但是如上图中所示,nginx中指出,必须将argv[1]置为NULL才行,而且要注意,系统给argv[0]提供的空间可能不足以存储你所要求的新title,解决方案是重新给环境变量申请内存区域,然后将环境变量复制过去(en转载 2014-01-24 12:45:17 · 1994 阅读 · 1 评论 -
深入浅出C/C++中的正则表达式库(一)——GNU Regex Library
正则表达式(Regular Expressions),又被称为regex或regexp,是一种十分简便、灵活的文本处理工具。它可以用来精确地找出某文本中匹配某种指定规则的内容。在linux下,grep, sed, awk等工具都支持正则表达式,这些工具的存在,为我们日常的文本处理带来了极大的便利。但是,有时候,我们自己写的程序中也需要用到正则表达式来处理一些文本,这时候就需要一些正则表达式库的支持转载 2013-01-25 15:06:21 · 1920 阅读 · 0 评论 -
使用zlib实现gzip格式数据的压缩和解压
代码简介本身这段代码也是从网络上找来的,但是网上的内容都没有针对gzip做特别说明,所以直接拿来用的时候出了些问题,现将我修改后的发在这里。注意代码中的注释部分,这里设置是专门针对gzip的,缺少了就不行了,gzip压缩格式和其他格式的区别就在这里。Bytef 就是 unsigned char,uLong就是 unsigned long,这些别名的设置都在zconf.h文件里面。转载 2014-04-16 13:50:20 · 2672 阅读 · 1 评论 -
libcurl之curl_easy_getinfo的使用教程
执行结果代码[cpp] view plaincopy// getinfo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include using namespace std; #include "curl/curl转载 2014-03-21 15:36:30 · 4524 阅读 · 0 评论 -
拥有线程安全和阻塞功能的vector类SemVector(LINUX平台)
这是我自己写的一个拥有线程安全和阻塞功能的vector类SemVector(LINUX平台),欢迎大家使用//semvector.h#ifndef SEMVECTOR_H_#define SEMVECTOR_H_#include #include #include #include templateclass SemVector{private: T *m_Arr原创 2013-03-06 16:22:53 · 1929 阅读 · 0 评论 -
推荐一款cpp解析json工具--rapidjson
项目地址:http://code.google.com/p/rapidjson/上面有很详细的介绍:http://code.google.com/p/rapidjson/wiki/UserGuide作者介绍说:" Rapidjsonis an attempt to create the fastest JSON parser and generator. "这是一个试图转载 2014-05-15 14:42:36 · 1429 阅读 · 0 评论 -
mysql_control:我自己封装的微型MYSQL操作库
简介:MYSQL的原生C语言API用起来有点麻烦(特别是在要获取查询结果的时候),所以我对其做了一个简单的封装,让它更易于使用。头文件:mysql_control.h#ifndef MYSQL_CONTROL#define MYSQL_CONTROL#include #include #include #include #include #include u原创 2012-11-15 22:52:09 · 1602 阅读 · 1 评论 -
C语言操作MYSQL小例子
初学使用用C语言操作MYSQL,写了个小例子,帖上来献丢人一下,呵呵。 程序很简单,先连接数据库,然后向class1表中插入一条数据,最后获取并输出整个class1表的内容。上代码://test.c//gcc test.c -o test -lmysqlclient#include #include #include //发生错误时,输出错误信息,关闭连原创 2012-11-13 22:35:52 · 6997 阅读 · 1 评论 -
MFC、WTL、WPF、wxWidgets、Qt、GTK的对比
WTL都算不上什么Framework,就是利用泛型特性对Win API做了层封装,设计思路也没摆脱MFC的影响,实际上用泛型做UI Framework也只能算是一次行为艺术,这个思路下继续发展就会变得没法用了,比如 代码过于复杂,编译太慢,出错不好调试等问题难以解决。而且封装得也不完全,还是随处可见 HWND HDC之类的东西。用途主要是写一些很小的程序,或者作为其他UI框架的后端实现转载 2014-07-26 09:39:03 · 5588 阅读 · 0 评论 -
代码格式调整(去掉行号),C++实现
有时候在网上看到一段优秀的代码,心动之余立即用Ctrl+C,Ctrl+V把它拷下来运行一下先,结果却发现该网站不厚道,连每行之前的行号也一同复制下来了,手动删除这些行号实在太麻烦,只好写一个小程序,来删除这些行号了。上代码://先创建in.txt, out.txt这两个文件//然后把要调整的代码放入in.txt中,运行这个程序,//那么,out.txt中的程序就是我们想要的原创 2012-04-05 21:17:55 · 3942 阅读 · 1 评论 -
用openssl进行rsa的加密与解密(linux,C++版)
初学openssl库,写了一例子,记录一下。原创 2014-02-17 11:34:27 · 15320 阅读 · 0 评论 -
Visual Studio 调试小技巧(1)-根据字符串内容添加断点
在用Visual Studio调试程序时,我们经常需要根据数值添加断点。比如需要当i == 2时中断运行,我们可以添加如下的断点: 有些时候,我们需要根据字符串的内容来添加断点。比如我们在调试如下代码:void CVSDebugTricksDlg::OnBnClickedButton1(){ char* string; for(int i = 0; i转载 2014-10-23 11:41:07 · 1470 阅读 · 0 评论 -
站在巨人的肩膀上,C++开源库大全
程序员要站在巨人的肩膀上,C++拥有丰富的开源库,这里包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。Standard Template Library:标准模板库C POSIX library : POSIX系统转载 2014-10-28 19:13:21 · 1693 阅读 · 1 评论 -
编写leetcode测试用例时所用的辅助函数
在做leetcode题目(https://oj.leetcode.com/problemset/algorithms/)的时候,我们总要自己写测试用例,常常要生成vector, list, tree,我将这些常用操作封装了一下,方便大家使用原创 2015-01-31 17:10:31 · 9231 阅读 · 2 评论 -
C++ string,删除字符串中的首尾空格
直接上代码: void EraseSpace(string &s) { //ch可换成其他字符 const char ch = ' '; s.erase(s.find_last_not_of(" ") + 1); s.erase(0, s.find_first_not_of(" ")); }够简单吧,亏我以前还一个字符一个字符地数空原创 2015-01-23 17:05:03 · 6964 阅读 · 3 评论 -
编译原理:tiny语言
描述真实的编译器非常困难。“真正的”编译器——也就是希望在每天编程中用到的——内容太复杂而且不易在本教材中掌握。另一方面,一种很小的语言(其列表包括1 0页左右的文本)的编译也不可能准确地描述出“真正的”编译器所需的所有特征。为了解决上述问题,人们在( A N S I)C中为小型语言提供了完整的源代码,一旦能明白这种技术,就能够很容易地理解这种小型语言的编译器了。这种语言称作T I N Y原创 2015-01-24 16:01:01 · 6874 阅读 · 0 评论 -
redis网络事件框架的使用
redis封装了一个小型网络库供自己使用,这个网络库只有几百行代码,却基本实现了一个高效的异步网络事件框架,而且与其他redis模块相对独立,故我将其独立出来,方便以后复用。与著名的libevent相比,它代码精简,只实现了最基本的功能,而且没有用上什么高深的技术,十分适合我们学习和借鉴。 以下这个程序实现了一个简单的回显服务器,并且每秒钟在控制台输出一句话。它简单地演示了redis网络模块的使用。 这个程序由6个源文件组成,ae.h, ae.c, ae_epoll.c, anet.h, anet.c原创 2013-11-25 17:33:21 · 3237 阅读 · 7 评论 -
C++高手们的博客
1:C/C++洗髓录作者:supermegaboy网址:http://blog.youkuaiyun.com/column/details/supermegaboy.html2:masefee透视C++作者:masefee网址:http://blog.youkuaiyun.com/column/details/masefeecpp.html3:设计模式C++实现作者:wuzhe原创 2012-04-05 21:52:47 · 1316 阅读 · 0 评论 -
常用正则表达式
正则表达式用于字符串处理、表单验证等场合,实用高效。现将一些常用的表达式收集于此,以备不时之需。匹配中文字符的正则表达式: [\u4e00-\u9fa5]评注:匹配中文还真是个头疼的事,有了这个表达式就好办了匹配双字节字符(包括汉字在内):[^\x00-\原创 2011-08-06 12:11:43 · 968 阅读 · 0 评论 -
VA自动补全QT
发现用了一下,VA不能把QT的东西进行代码自动补全。于是要动下小手脚。 1.在Windows系统环境变量下增加 QTDIR = 你QT的安装目录.2启动VS->工具->选项->项目和解决方案->VC++目录: 可执行文件下增加:$(QTDIR)\转载 2011-08-08 17:20:36 · 3290 阅读 · 0 评论 -
VS2008 显示行号
菜单-工具-选项在新窗口中左面树菜单中展开“文本编辑器”,找到子项“所有语言”在右面的面板中 显示的行号前面打勾原创 2011-08-22 09:29:18 · 1528 阅读 · 0 评论 -
在VC中检测内存泄漏
声明:checkleaks.h和checkleaks.cpp这两个文件中的代码是在网上COPY的,但原来那个网站现在却找不到了所以,这篇文章不算完全原创,呵呵。就当作是一个存档吧先上代码://checkleaks.h#ifndef SET_DEBUG_N原创 2011-10-09 17:40:13 · 2070 阅读 · 2 评论 -
每个程序员都应理解的7种坏味道,11种原则,23种模式
每个程序员都应理解的7种坏味道,11种原则,23种模式 (一)7种设计坏味道 1.僵化性: 很难对系统进行改动,因为每个改动都会迫使许多对系统其他部分的其它改动。 2.脆弱性: 对系统的改动会导致系统中和改动的地方在概念上无关的许多地方出现问题。 3.牢固性: 很难解开系统的纠结,使之成为一些可在其他系统中重用的组件。 4.粘滞性: 做正确的事情比做错误的事情要困难。转载 2011-11-26 10:27:47 · 1484 阅读 · 0 评论 -
字符编码
如果非要评个计算机初学者最头晕概念的话,估计字符编码可以排到前十,比马尔可夫链之类的理论性概念都要晕。为什么呢?因为这东西课本上不会讲,也没有什么理论,只能靠自己体会出来。我比较笨一点,晕了好几年,到了今年终于明白了怎么一回事,现在记在这边,免得再忘了。首先定义只在本文中出现的两个基础概念:1.字节组。每8个位(bit)是为一个字节,多个字节成为一个字节组。2.文字串。现实语言的最小单转载 2012-01-16 11:00:36 · 1121 阅读 · 0 评论 -
学习C++:实践者的方法
前言我的blog以前很长一段时间关注的都是C++中的技术&细节,乃至于读者和应者都寥寥。然而5月份的时候写的一篇“你应当如何学习C++”,阅读量却达到了3万多,在blog上所有文章中却是最高的(且远远超过了第二位);评论数目也有一百多。为什么独独这篇能够激起这么多的回应,想必是国内的C++社群被C++压抑太久,或者,严格来说,是被C++的教育方式压抑太久。实际上,不管是在各大国内论坛上,还转载 2012-01-16 13:51:49 · 1017 阅读 · 0 评论 -
正则表达式资源
RT,我自己也是新手,也正在学,如果大家有更好的资源也共享一下。这个是大家最熟悉的RegExLab:http://www.regexlab.com/zh/regref.htm正则表达式30分钟入门教程: http://manual.phpv.net/regular_expression.html脚本之家:http://www.jb51.net/list/list_6_1转载 2012-03-04 21:07:39 · 1006 阅读 · 0 评论
分享