linux C正则表达式
在网上找到的一个程序
[c]
#include <stdio.h>
#include <sys/types.h>
#include <regex.h>
/* 取子串的函数 */
static char* substr(const char*str,unsigned start, unsigned end)
{
unsigned n = end - start;
static char stbuf[256];
strncpy(stbuf, str + start, n);
stbuf[n] = 0;
return stbuf;
}
/* 主程序 */
int main(int argc, char** argv)
{
char * pattern;
int x, z, lno = 0, cflags = 0;
char ebuf[128], lbuf[256];
regex_t reg;
regmatch_t pm[10];
const size_t nmatch = 10;
/* 编译正则表达式*/
pattern = argv[1]; //获取正则表达式
z = regcomp(®, pattern, cflags); //如果编译成功返回0,其它返回说明有错误产生
if (z != 0)
{
regerror(z, ®, ebuf, sizeof(ebuf));
fprintf(stderr, "%s: pattern '%s' \n",ebuf, pattern);
return 1;
}
/* 逐行处理输入的数据 */
while(fgets(lbuf, sizeof(lbuf), stdin))
{
++lno;
//取得读取字符串的长度,并判断字符串结尾字符是否为回车符'\n'。如果是,将结尾字符改为0
if ((z = strlen(lbuf)) > 0 && lbuf[z-1]== '\n')
lbuf[z - 1] = 0;
/* 对每一行应用正则表达式进行匹配 */
z = regexec(®, lbuf, nmatch, pm, 0);
if (z == REG_NOMATCH) continue;
&nbs
相关文档:
现在大家对Q5的讨论已经上升到发行版和桌面环境的程度了……估计坛子里有许多非LINUX玩家可能听得云里雾里吧?我大概讲一些我知道的,比较简单而且实用的小知识,希望能够同学们一点帮助。
按照惯例,首先必须澄清一下Linux的定义。很多同学可能都误以为Linux就是一个操作系统,严格来讲,这是不对的。linux作 ......
把U盘刻成光盘(以ubuntu9.10为例)
前提:电脑支持U盘启动,有些电脑是不支持的。
开始制作
一、材料:
UltraISO(软碟通)软件
ubuntu 9.10 iso
u盘(推荐1G以上)。
二、操作平台:
windows xp/vista [我是在vista下制作的,必须用管理员权限打开UltraISO(软碟通)](右击其快捷方式,以管理员身分打开)
说 ......
Linux下解压命令大全
Linux下解压命令大全
.tar
解压:tar xvf filename.tar
打包:tar cvf filename.tar dirname
.gz
解压:gzip -d filename.gz / gunzip filename.gz
压缩:gzip filename
.tar.gz/.tgz
解压:tar zxvf  ......
鉴于支付宝等服务无视我们Linux用户的存在,没办法,那只好在Linux上用VirtualBox虚拟一个Windows系统了。系统装好了,在日常使用过程中,往往要从VirtualBox的客户机(guest system)中使用主机(host system)里面的文件,那么通过共享文件夹的方式可以达成此目的。
我在这里 ......
c语言宏定义的连接符有哪些
[此问题的推荐答案]
(一)宏定义中的## 连接符与# 符
## 连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的 ......