易截截图软件、单文件、免安装、纯绿色、仅160KB

C语言使用正则表达式(2)

GNU/Linux有两套库可用于正则表达式编程:POSIX库和PCRE库。前者不需要单独安装,一般需求还是能满足的,速度稍慢些。后者是久负盛名的Perl正则表达式库,功能强大,匹配速度快,不过可能需要单独安装。
我们先用一个例子来介绍如何使用POSIX库。
#i nclude <stdio.h>
#i nclude <sys/types.h>
#i nclude <regex.h>
char *get_regerror (int errcode, regex_t *compiled)
{
 size_t length = regerror (errcode, compiled, NULL, 0);
 char *buffer = malloc(length);
 if (!buffer) return NULL;
 (void) regerror (errcode, compiled, buffer, length);
 return buffer;
}
int regtest(const char*pattern, const char* string)
{
 regex_t reg;
 regmatch_t *subexprs = NULL;
 int ret;
 int i;
 if (0 != (ret=regcomp(?, pattern, REG_EXTENDED))) {
  char *buffer = get_regerror(ret, ?);
  if (buffer) {
   fprintf(stderr, "regcomp:[%d]%s\n", ret, buffer);
   free(buffer);
  }
  return -1;
 }
 subexprs = malloc((reg.re_nsub+1)*sizeof(regmatch_t));
 if (!subexprs) {
  fprintf(stderr, "error malloc subexprs\n");
  regfree(?);
  return -1;
 }
 if (0 != (ret=regexec(?, string, reg.re_nsub+1, subexprs, 0))) {
  char *buffer = get_regerror(ret, ?);
  if (buffer) {
   fprintf(stderr, "regexec:[%d]%s\n", ret, buffer);
   free(buffer);
  }
  
  regfree(?);
  return -1;
 }
 for (i =&


相关文档:

C rule

例) 危険なコーディング
1                char cStr[256];
2                ZeroMemory(cStr, sizeof(cStr));
3      &nb ......

20100531 《C陷阱与缺陷》第三章读书笔记

  今天是5月的最后一天了,2010年的5月,倒霉的一个月终于要过去了。今天抽空我又读完了第三章,顺便做下笔记。
  这一章的题目叫做---语义“陷阱”
  程序也有可能表面看上去是一个意思,实际上的意思却相去甚远。
  对于数组:
  C语言中只有一维数组, ......

C遗留的结构跳转 北海

1)          goto
goto 只能在一个函数内跳转。建议少用,使得程序维护起来容易出错;但是,在有多个循环情况下跳转,有时用goto可以使得问题变得简单。
class A
{
public:
A(){}
~A(){}
};
           &nbs ......

C' Fragment

把输入的一串字符转成数组,转成链表,然后删去其中指定的字符,在尾部添加一个字符。
(程序还不完善,没有对输错的情况进行处理,,暂时先这样吧。。= =。)
#include<stdio.h>
#include<malloc.h>
#define LEN sizeof(struct link)
struct link
{
char ch;
struct link *next;
}*string;
char a ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号