⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scan.h

📁 使用re2c分析html頁面的url scan.h url.re Makefile
💻 H
字号:
#ifndef  SCAN_H_#define  SCAN_H_#include <stdlib.h>#include <stdio.h>#include <string.h>#include <unistd.h>typedef unsigned char uchar;typedef unsigned int  uint ;#define	BSIZE	8192/* *  @tok  : first match of result  *  @bot  : the buffer pointer   : must free  *  @cur  : YYCURSOR   *  @pos  :  *  @lim  : YYLIMIT          *  @ptr  : YYMARKER        *  @top  *  @eof * */typedef struct Scanner {    int			fd;    uchar		*bot, *tok, *ptr, *cur, *pos, *lim, *top, *eof;    uint		line;} Scanner;uchar *fill(Scanner *s, uchar *cursor){    if(!s->eof) {	uint cnt = s->tok - s->bot;	if(cnt){	    memcpy(s->bot, s->tok, s->lim - s->tok);	    s->tok = s->bot;	    s->ptr -= cnt;	    cursor -= cnt;	    s->pos -= cnt;	    s->lim -= cnt;	}	if((s->top - s->lim) < BSIZE){	    uchar *buf = (uchar*) malloc(((s->lim - s->bot) + BSIZE)*sizeof(uchar));	    memcpy(buf, s->tok, s->lim - s->tok);	    s->tok = buf;	    s->ptr = &buf[s->ptr - s->bot];	    cursor = &buf[cursor - s->bot];	    s->pos = &buf[s->pos - s->bot];	    s->lim = &buf[s->lim - s->bot];	    s->top = &s->lim[BSIZE];	    free(s->bot);	    s->bot = buf;	}	if((cnt = read(s->fd, (char*) s->lim, BSIZE)) != BSIZE){	    s->eof = &s->lim[cnt]; 	    *(s->eof)++ = '\n';	}	s->lim += cnt;    }    return cursor;}#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -