2013年7月7日

摘要: 使用小括号指定一个子表达式后,匹配这个子表达式的文本(也就是此分组捕获的内容)可以在表达式或其它程序中作进一步的处理。默认情况下,每个分组会自动拥有一个组号,规则是: 从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推。后向引用用于重复搜索前面某个分组匹配的文本。例如: \1:代表分组1匹配的文本。难以理解?请看示例:\b(\w+)\b\s+\1\b可以用来匹配重复的单词,像go go, 或者kitty kitty。这个表达式首先是一个单词,也就是单词开始处和结束处之间的多于一个的字母或数字(\b(\w+)\b),这个单词会被捕获到编号为1的分组中,然后是1个.. 阅读全文
posted @ 2013-07-07 10:44 小葫芦藤 阅读(207) 评论(0) 推荐(0)

2013年7月6日

摘要: 1、入门简介简单的说,正则表达式是一种可以用于模式匹配和替换的强有力的工具。我们可以在几乎所有的基于UNIX系统的工具中找到正则表达式的身影,例如,vi编辑器,Perl或PHP脚本语言,以及awk或sed shell程序等。此外,象JavaScript这种客户端的脚本语言也提供了对正则表达式的支持。由此可见,正则表达式已经超出了某种语言或某个系统的局限,成为人们广为接受的概念和功能。 正则表达式可以让用户通过使用一系列的特殊字符构建匹配模式,然后把匹配模式与数据文件、程序输入以及WEB页面的表单输入等目标对象进行比较,根据比较对象中是否包含匹配模式,执行相应的程序。 举例来说,正则表达式的.. 阅读全文
posted @ 2013-07-06 21:34 小葫芦藤 阅读(231) 评论(0) 推荐(0)

2013年7月5日

摘要: 结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: struct 位域结构名 { 位域列表 }; ... 阅读全文
posted @ 2013-07-05 10:06 小葫芦藤 阅读(734) 评论(0) 推荐(0)
摘要: 原文地址:http://blog.csdn.net/wooin/archive/2006/04/29/697106.aspx我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的: int printf( const char* format, ...); 它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法: printf("%d",i); printf("%s",s); printf("the number is %d ,string is:%s&q 阅读全文
posted @ 2013-07-05 09:59 小葫芦藤 阅读(194) 评论(0) 推荐(0)

2013年7月4日

摘要: int snprintf(char *restrict buf, size_t n, const char * restrictformat, ...);函数说明:最多从源串中拷贝n-1个字符到目标串中,然后再在后面加一个0。所以如果目标串的大小为n 的话,将不会溢出。函数返回值:若成功则返回欲写入的字符串长度,若出错则返回负值。Result1(推荐的用法)#include #include int main(){ char str[10]={0,}; snprintf(str, sizeof(str), "0123456789012345678"); printf(&qu 阅读全文
posted @ 2013-07-04 14:24 小葫芦藤 阅读(1915) 评论(0) 推荐(0)
摘要: C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if (EXP) / fprintf(stderr, "Warning: " #EXP "/n"); } / while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF ( 阅读全文
posted @ 2013-07-04 13:56 小葫芦藤 阅读(464) 评论(0) 推荐(0)
摘要: gcc 的visibility使用(zz)-fvisibility=default|internal|hidden|protectedgcc的visibility是说,如果编译的时候用了这个属性,那么动态库的符号都是hidden的,除非强制声明。1.创建一个c源文件,内容简单#include#include__attribute((visibility("default"))) void not_hidden(){printf("exported symbol\n");}void is_hidden(){printf("hiddenone\n& 阅读全文
posted @ 2013-07-04 13:30 小葫芦藤 阅读(1246) 评论(0) 推荐(0)

2013年7月3日

摘要: 1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__attribute__参数__attribute__语法格式为:__attribute__ ( ( attribute-list ) )函数属性(Function Attribute),函数属性可以帮助开发者把一些特性添加到 阅读全文
posted @ 2013-07-03 17:35 小葫芦藤 阅读(225) 评论(0) 推荐(0)
摘要: 进程就好比人一样有其生命,我们通过fork()函数来创建一个进程,那么我们又是如何来中止进程呢。 进程退出 1.在Linux中任何让一个进程退出 进程退出表示进程即将结束。在Linux中进程退出分为了正常退出和异常退出两种。 1>正常退出 a. 在main()函数中执行return 。 b.调用exit()函数 c.调用_exit()函数 2>异常退出 a.调用about函数 b.进程收到某个信号,而该信号使程序终止。 Tiger-John说明:不管 是那种 退出方式,系统最终都会执行内核中的同一代码。这段代码用来关闭进程所用已打开的文件描述符,释放它所占用的内存和其他资源。 3& 阅读全文
posted @ 2013-07-03 17:16 小葫芦藤 阅读(245) 评论(0) 推荐(0)

2013年7月1日

摘要: AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(logn)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他们在1962年的论文《An algorithm for the organization of information》中发表了它。节点的平衡因子是它的左子树的高度减去它的右子树的高度(有时相反)。带有平衡因子1、0或 -1的节点被认为是平衡的。带有平衡因子 -2或2的节点被认为是不平 阅读全文
posted @ 2013-07-01 15:32 小葫芦藤 阅读(1707) 评论(0) 推荐(0)

导航