亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? findrep.c

?? 《c語言高級實例解析》光盤所附源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:


#include "tdestr.h"
#include "common.h"
#include "tdefunc.h"
#include "define.h"



int  get_replacement_flags( int line )
{
char line_buff[(MAX_COLS+1)*2]; /* buffer for char and attribute  */
register int c;
int  func;
int  rc;

   save_screen_line( 0, line, line_buff );
   eol_clear( 0, line, g_display.text_color );
  
   s_output( find1, line, 0, g_display.message_color );
   xygoto( strlen( find1 ) + 2, line );
   do {
      c = getkey( );
      func = getfunc( c );
   } while (c != 'P'  &&  c != 'p'  &&  c != 'N'  &&  c != 'n'  &&
            c != RTURN  &&  c != ESC  &&  func != AbortCommand);
   restore_screen_line( 0, line, line_buff );
   switch (c) {
      case 'P' :
      case 'p' :
      case RTURN :
         g_status.replace_flag = PROMPT;
         rc = OK;
         break;
      case 'N' :
      case 'n' :
         g_status.replace_flag = NOPROMPT;
         rc = OK;
         break;
      default :
         rc = ERROR;
   }
   bm.search_defined = rc;
   return( rc );
}



int  ask_replace( WINDOW *window, int *finished )
{
char line_buff[(MAX_COLS+1)*2]; /* buffer for char and attribute  */
register int c;
int  func;
int  prompt_line;
int  rc;

   prompt_line = window->cline - 1;
   c = 39 - (strlen( find2 ) >> 1);
   save_screen_line( 0, prompt_line, line_buff );
   
   s_output( find2, prompt_line, c, g_display.message_color );
   do {
      c = getkey( );
      func = getfunc( c );
   } while (c != 'R' && c != 'r' && c != 'S' && c != 's' && c != 'E' && c != 'e'
          && c != ESC  &&  func != AbortCommand);
   restore_screen_line( 0, prompt_line, line_buff );
   switch (c) {
      case 'R' :
      case 'r' :
         rc = OK;
         break;
      case 'E' :
      case 'e' :
         *finished = TRUE;
      case 'S' :
      case 's' :
         rc = ERROR;
         break;
      default :
         *finished = TRUE;
         rc = ERROR;
         break;
   }
   return( rc );
}



int  ask_wrap_replace( WINDOW *window, int *finished )
{
char line_buff[(MAX_COLS+1)*2]; 
register int c;
int  func;
int  prompt_line;
int  rc;

   prompt_line = window->bottom_line;
   save_screen_line( 0, prompt_line, line_buff );
  
   set_prompt( find3, prompt_line );
   do {
      c = getkey( );
      func = getfunc( c );
   } while (c != 'Q'  &&  c != 'q'  &&  c != 'C'  &&  c != 'c' &&
          c != ESC  &&  func != AbortCommand);
   restore_screen_line( 0, prompt_line, line_buff );
   switch (c) {
      case 'C' :
      case 'c' :
         rc = OK;
         break;
      case 'Q' :
      case 'q' :
      default :
         *finished = TRUE;
         rc = ERROR;
         break;
   }
   return( rc );
}



void do_replace( WINDOW *window, int direction )
{
int  old_len;           
int  new_len;           
int  rcol;
register int net_change;
char *source;           
char *dest;             

   old_len = strlen( g_status.pattern );
   new_len = strlen( g_status.subst );
   net_change = new_len - old_len;
   rcol = window->rcol;

   
   g_status.copied = FALSE;
   copy_line( window->ll );
   detab_linebuff( );

   if (net_change != 0) {
      assert( rcol + old_len >= 0);
      assert( net_change <= rcol + old_len );

      source = g_status.line_buff + rcol + old_len;
      dest  = source + net_change;

      assert( g_status.line_buff_len - rcol - old_len >= 0 );
      assert( g_status.line_buff_len - rcol - old_len < MAX_LINE_LENGTH );

      memmove( dest, source, g_status.line_buff_len - rcol - old_len );
      g_status.line_buff_len += net_change;
   }

   

   assert( rcol >= 0 );
   assert( rcol < MAX_LINE_LENGTH );
   assert( g_status.line_buff_len >= 0 );
   assert( g_status.line_buff_len >= rcol );

   for (dest=g_status.line_buff+rcol, source=g_status.subst; *source;)
      *dest++ = *source++;

   entab_linebuff( );
   window->file_info->modified = TRUE;
   un_copy_line( window->ll, window, TRUE );
   window->ll->dirty = TRUE;

   if (direction == FORWARD)
      window->rcol += (new_len - 1);

   assert( window->rcol >= 0 );
   show_avail_mem( );
}


/*
 * 作用: 建立并且執(zhí)行查找操作
 * 參數(shù): window:  當前窗口的指針
 */
int  find_string( WINDOW *window )
{
int  direction;
int  new_string;
char pattern[MAX_COLS];  
long found_line;
long bin_offset;
line_list_ptr ll;
register WINDOW *win;  
int  rc;
int  old_rcol;
int  rcol;

   switch (g_status.command) {
      case FindForward :
         direction = FORWARD;
         new_string = TRUE;
         break;
      case FindBackward :
         direction = BACKWARD;
         new_string = TRUE;
         break;
      case RepeatFindForward1 :
      case RepeatFindForward2 :
         direction = FORWARD;
         new_string =  bm.search_defined != OK ? TRUE : FALSE;
         break;
      case RepeatFindBackward1 :
      case RepeatFindBackward2 :
         direction = BACKWARD;
         new_string =  bm.search_defined != OK ? TRUE : FALSE;
         break;
      default :
         direction = 0;
         new_string = 0;
         assert( FALSE );
         break;
   }
   win = window;
   entab_linebuff( );
   if (un_copy_line( win->ll, win, TRUE ) == ERROR)
      return( ERROR );

   /*
    * 得到搜索文本,上次的搜索文本做為缺省值
    */
   if (new_string == TRUE) {
      *pattern = '\0';
      if (bm.search_defined == OK) {

         assert( strlen( (char *)bm.pattern ) < MAX_COLS );

         strcpy( pattern, (char *)bm.pattern );
      }

      /*
       * 查找
       */
      if (get_name( find4, win->bottom_line, pattern,
                    g_display.message_color ) != OK  ||  *pattern == '\0')
         return( ERROR );
      bm.search_defined = OK;

      assert( strlen( pattern ) < MAX_COLS );

      strcpy( (char *)bm.pattern, pattern );
      build_boyer_array( );
   }

   rc = OK;
   if (bm.search_defined == OK) {
      old_rcol = win->rcol;
      if (mode.inflate_tabs)
         win->rcol = entab_adjust_rcol( win->ll->line, win->ll->len, win->rcol);
      update_line( win );
      show_search_message( SEARCHING, g_display.diag_color );
      bin_offset = win->bin_offset;
      if (direction == FORWARD) {
         if ((ll = forward_boyer_moore_search( win, &found_line, &rcol )) != NULL) {
            if (g_status.wrapped && g_status.macro_executing)
               rc = ask_wrap_replace( win, &new_string );
            if (rc == OK)
               find_adjust( win, ll, found_line, rcol );
            else
               win->bin_offset = bin_offset;
         }
      } else {
         if ((ll = backward_boyer_moore_search( win, &found_line, &rcol )) != NULL) {
            if (g_status.wrapped && g_status.macro_executing)
               rc = ask_wrap_replace( win, &new_string );
            if (rc == OK)
               find_adjust( win, ll, found_line, rcol );
            else
               win->bin_offset = bin_offset;
         }
      }
      if (g_status.wrapped)
         show_search_message( WRAPPED, g_display.diag_color );
      else
         show_search_message( CLR_SEARCH, g_display.mode_color );
      if (ll == NULL) {
         /*
          * 沒有找到
          */
         if (mode.inflate_tabs)
            win->rcol = old_rcol;
         combine_strings( pattern, find5a, (char *)bm.pattern, find5b );
         error( WARNING, win->bottom_line, pattern );
         rc = ERROR;
      }
      show_curl_line( win );
      make_ruler( win );
      show_ruler( win );
   } else {
      /*
       * 沒有定義查找模式
       */
      error( WARNING, win->bottom_line, find6 );
      rc = ERROR;
   }
   return( rc );
}


void build_boyer_array( void )
{

   
   if (g_status.command == DefineGrep  ||  g_status.command == RepeatGrep) {

      assert( strlen( (char *)sas_bm.pattern ) + 1 < MAX_COLS );

      memcpy( bm.pattern, sas_bm.pattern, strlen( (char *)sas_bm.pattern ) +1 );
      bm.search_defined = OK;
   }

   if (bm.search_defined == OK) {
      build_forward_skip( &bm );
      bm.forward_md2 = calculate_forward_md2( (char *)bm.pattern,
                                                bm.pattern_length );

      
      build_backward_skip( &bm );
      bm.backward_md2 = calculate_backward_md2( (char *)bm.pattern,
                                                  bm.pattern_length );
   }


   
   if (sas_bm.search_defined == OK) {
      build_forward_skip( &sas_bm );
      sas_bm.forward_md2 = calculate_forward_md2( (char *)sas_bm.pattern,
                                                    sas_bm.pattern_length );

     
      build_backward_skip( &sas_bm );
      sas_bm.backward_md2 = calculate_backward_md2( (char *)sas_bm.pattern,
                                                      sas_bm.pattern_length );
   }
}



void build_forward_skip( boyer_moore_type *bmp )
{
register unsigned char *p;
register int i;

   assert( strlen( (char *)bmp->pattern ) < MAX_COLS );

   i = bmp->pattern_length = (int)strlen( (char *)bmp->pattern );

  
   memset( bmp->skip_forward, i, 256 );
   i--;

   
   for (p=bmp->pattern; i>=0; i--, p++) {

      assert( (char)i < bmp->skip_forward[*p] );

      bmp->skip_forward[*p] = (char)i;
      if (mode.search_case == IGNORE) {
         if (*p >= 'A' && *p <= 'Z') {

            assert( (char)i < bmp->skip_forward[*p+32] );

            bmp->skip_forward[*p+32] = (char)i;
         } else if (*p >= 'a' && *p <= 'z') {

            assert( (char)i < bmp->skip_forward[*p-32] );

            bmp->skip_forward[*p-32] = (char)i;
         }
      }
   }
}



void build_backward_skip( boyer_moore_type *bmp )
{
register unsigned char *p;
register int i;

   i = -bmp->pattern_length;
   memset( bmp->skip_backward, i, 256 );
   i++;
   for (p=bmp->pattern + bmp->pattern_length - 1; i<=0; i++, p--) {

      assert( (char)i > bmp->skip_backward[*p] );

      bmp->skip_backward[*p] = (char)i;
      if (mode.search_case == IGNORE) {
         if (*p >= 'A' && *p <= 'Z') {

            assert( (char)i > bmp->skip_backward[*p+32] );

            bmp->skip_backward[*p+32] = (char)i;
         } else if (*p >= 'a' && *p <= 'z') {

            assert( (char)i > bmp->skip_backward[*p-32] );

            bmp->skip_backward[*p-32] = (char)i;
         }
      }
   }
}



int  calculate_forward_md2( char *p, int len )
{
int  last_c;
register int i;
register int md2;

   md2 = 1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91亚洲国产成人精品一区二三| 免播放器亚洲一区| 欧美欧美午夜aⅴ在线观看| 日韩色在线观看| 亚洲电影视频在线| 日本91福利区| 日韩专区欧美专区| 国产91丝袜在线18| 久久99精品国产麻豆婷婷| 亚洲大片一区二区三区| 中文字幕在线不卡一区二区三区| 精品国产成人系列| 欧美精品1区2区3区| 欧美精品三级日韩久久| 中文字幕va一区二区三区| 日本系列欧美系列| 在线观看三级视频欧美| 丰满亚洲少妇av| 国产成人高清视频| 精品国产sm最大网站| 欧美大片拔萝卜| 日韩一区二区三区观看| 国产精品无遮挡| 午夜欧美大尺度福利影院在线看| 美女mm1313爽爽久久久蜜臀| 欧美性感一类影片在线播放| 欧美性做爰猛烈叫床潮| 日韩网站在线看片你懂的| 国产日韩欧美在线一区| 日韩美女主播在线视频一区二区三区| 欧美精品一卡两卡| 亚洲精品一区二区三区99| 欧美高清一级片在线| 一区二区三区在线观看动漫| 另类小说一区二区三区| 欧美日韩小视频| 亚洲午夜久久久久久久久电影网| 美女视频黄久久| 欧美三级韩国三级日本三斤| 国产精品久久久久久久久久免费看 | 欧美电影免费观看高清完整版| 日本道免费精品一区二区三区| 99国内精品久久| 国产欧美综合色| 成人激情小说乱人伦| 亚洲美女视频一区| 国产成人精品一区二区三区四区| 一级特黄大欧美久久久| 337p粉嫩大胆色噜噜噜噜亚洲| 色视频欧美一区二区三区| 国产精品自拍三区| 丝袜亚洲另类欧美| 亚洲视频免费在线观看| 久久久久99精品国产片| 欧美午夜寂寞影院| 福利一区福利二区| 另类人妖一区二区av| 亚洲一二三级电影| 亚洲丝袜制服诱惑| 亚洲国产岛国毛片在线| 欧美变态凌虐bdsm| 在线免费av一区| 91香蕉国产在线观看软件| 国产不卡免费视频| 精品无码三级在线观看视频| 天天影视网天天综合色在线播放 | 一本到不卡精品视频在线观看| 黑人巨大精品欧美一区| 美女视频黄久久| 免费看欧美女人艹b| 午夜精品久久久久久久99樱桃| 亚洲欧洲在线观看av| 欧美国产日韩亚洲一区| 久久精品人人爽人人爽| 久久这里都是精品| 久久亚洲综合色一区二区三区 | 欧美一区二区三级| 欧美三级韩国三级日本一级| 欧美午夜电影网| 欧美日韩高清一区二区| 欧美三区在线视频| 欧美日韩午夜在线| 欧美精品在线视频| 日韩区在线观看| 日韩亚洲欧美一区二区三区| 日韩一区二区免费在线观看| 3d动漫精品啪啪一区二区竹菊| 欧美午夜精品一区| 91精品欧美久久久久久动漫 | 欧美在线观看18| 在线观看日韩高清av| 欧美日韩在线播放一区| 欧美日韩国产美女| 91精品在线一区二区| 日韩天堂在线观看| 久久久久国色av免费看影院| 中文字幕免费不卡在线| 亚洲美女电影在线| 日韩一区精品视频| 精品一区二区av| 粉嫩一区二区三区在线看| 色哟哟一区二区在线观看| 欧美亚洲丝袜传媒另类| 日韩美女在线视频| 国产精品你懂的在线| 亚洲小说欧美激情另类| 精品一区二区三区视频在线观看| 国产成人综合在线观看| 一本色道久久综合精品竹菊| 51久久夜色精品国产麻豆| 精品国产99国产精品| 国产精品黄色在线观看| 婷婷六月综合网| 国产精品亚洲午夜一区二区三区| 99久久综合国产精品| 欧美日韩一区小说| 国产视频一区二区三区在线观看| 亚洲欧美一区二区三区国产精品| 亚洲妇熟xx妇色黄| 福利视频网站一区二区三区| 欧美系列日韩一区| 国产视频在线观看一区二区三区| 洋洋av久久久久久久一区| 久久99精品国产麻豆婷婷洗澡| 成年人国产精品| 91精品国产91热久久久做人人| 中文欧美字幕免费| 亚洲成a人v欧美综合天堂下载| 国产一区二区三区久久久| 色94色欧美sute亚洲13| 久久久久久亚洲综合影院红桃 | 国产午夜精品一区二区三区视频 | 国产精品福利影院| 美国精品在线观看| 色播五月激情综合网| 中文一区在线播放| 精品一区二区三区不卡| 日本精品一区二区三区四区的功能| 日韩一区二区在线观看视频| 亚洲人成精品久久久久久| 国产一区二区三区精品视频| 91精品国产综合久久久久久久| 国产精品二三区| 国产精品99久久不卡二区| 欧美一级高清片在线观看| 夜色激情一区二区| 色综合欧美在线视频区| 国产精品嫩草影院av蜜臀| 国产精品一卡二| 日韩欧美国产一区二区在线播放| 亚洲国产视频a| 色偷偷久久人人79超碰人人澡| 一区二区三区色| av中文字幕在线不卡| 国产亚洲欧美一区在线观看| 日韩av在线发布| 制服丝袜中文字幕一区| 亚洲国产一区二区三区| 91丝袜国产在线播放| 国产精品久久久久久久久晋中 | 色综合久久中文综合久久97 | 亚洲精品你懂的| 99久久精品费精品国产一区二区| 国产三级一区二区| 韩国精品主播一区二区在线观看| 欧美一区二区三区免费在线看 | 精品在线播放免费| 91精品国产综合久久久久久 | 亚洲成人1区2区| 欧美在线啊v一区| 亚洲一区二区视频| 欧美日韩你懂得| 亚洲h在线观看| 日韩一级黄色片| 久久99国产精品麻豆| 国产亚洲一区二区三区在线观看| 国产麻豆精品theporn| 久久婷婷国产综合精品青草| 国产精品77777竹菊影视小说| 久久久影视传媒| av成人免费在线| 一区二区三区在线免费视频| 在线看国产一区二区| 亚洲电影第三页| 日韩精品一区二区三区中文精品| 极品少妇一区二区| 国产肉丝袜一区二区| av爱爱亚洲一区| 亚洲福利视频导航| 日韩一区二区免费电影| 黄页网站大全一区二区| 欧美激情一区二区| 91亚洲精品一区二区乱码| 亚洲愉拍自拍另类高清精品| 欧美日韩成人一区| 国内精品免费**视频| 国产精品久久久久精k8| 欧美视频一区二区| 精品一区二区三区免费毛片爱| 国产日韩精品一区二区三区在线|