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

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

?? file.c

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



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


#include <dos.h>                
#include <bios.h>               
#include <io.h>                 
#include <fcntl.h>              
#if defined( __MSC__ )
   #include <errno.h>
   #include <sys\types.h>       
#endif
#include <sys\stat.h>           


int  hw_fattrib( char *name )
{
register int rc;
int  fattr;

   rc = get_fattr( name, &fattr );
   return( rc == OK ? rc : ERROR );
}


int  change_mode( char *name, int line )
{
int  result;
int  fattr;
register int rc;
char line_buff[(MAX_COLS+1)*2]; 

   rc = OK;
   result = get_fattr( name, &fattr );
   if (result != OK)
      rc = ERROR;
   else if (result == OK && fattr & READ_ONLY) {
     
      save_screen_line( 0, line, line_buff );
     
      set_prompt( main6, line );
      if (get_yn( ) != A_YES)
         rc = ERROR;
      if (rc == OK && set_fattr( name, ARCHIVE ) != OK)
         rc = ERROR;
      restore_screen_line( 0, line, line_buff );
   }
   return( rc );
}



int  write_file( char *name, int open_mode, file_infos *file, long start,
                 long end, int block )
{
FILE *fp;       
char *p;
char *z = "\x1a";
register int rc;
int  bc;
int  ec;
int  len;
int  write_z;
int  write_eol;
long number;
line_list_ptr ll;
char *open_string;
char *eol;
size_t eol_count;

   write_z = mode.control_z;
   switch (open_mode) {
      case APPEND :
         open_string = "ab";
         break;
      case OVERWRITE :
      default :
         open_string = "wb";
         break;
   }
   switch (file->crlf) {
      case BINARY   :
         eol_count = 0;
         eol = "";
         write_z = FALSE;
         break;
      case CRLF   :
         eol_count = 2;
         eol = "\r\n";
         break;
      case LF     :
         eol_count = 1;
         eol = "\n";
         break;
      default     :
         assert( FALSE );
   }
   rc = OK;
   if ((fp = fopen( name, open_string )) == NULL || ceh.flag == ERROR)
      rc = ERROR;
   else {
      ec = bc = len = 0;
      ll = file->line_list;
      if (block == LINE || block == BOX || block == STREAM) {
         if (g_status.marked_file == NULL)
            rc = ERROR;
         else
            file = g_status.marked_file;
         if (rc != ERROR) {
            ll = file->line_list;
            for (number=1; number<start && ll->next != NULL; number++)
               ll = ll->next;
         }
         if (rc != ERROR && (block == BOX || block == STREAM)) {
            bc  = file->block_bc;
            ec  = file->block_ec;
            len = ec + 1 - bc;
         }
         if (rc != ERROR  &&  block == STREAM) {
            if (start == end )
               block = BOX;
         }
      } else {
         for (number=1; number<start && ll->next != NULL; number++)
            ll = ll->next;
      }
      p = g_status.line_buff;
      if (rc == OK) {
         if (block == BOX) {

            assert( len >= 0 );
            assert( len < MAX_LINE_LENGTH );

            for (;start <= end  &&  ll->len != EOF && rc == OK; start++) {
               g_status.copied = FALSE;
               load_box_buff( p, ll, bc, ec, ' ' );
               if (fwrite( p, sizeof( char ), len, fp ) < (unsigned)len ||
                          ceh.flag == ERROR)
                  rc = ERROR;
               if (rc != ERROR  && fwrite( eol, sizeof( char ), eol_count, fp )
                                    < eol_count || ceh.flag == ERROR)
                  rc = ERROR;
               ll = ll->next;
               if (ll == NULL)
                  rc = ERROR;
            }
         } else {
            for (number=start; number <= end && rc == OK && ll->len != EOF;
                      number++) {
               g_status.copied = FALSE;
               copy_line( ll );
               len = g_status.line_buff_len;
               if (block == STREAM) {
                  if (number == start) {
                     bc = bc > len ? len : bc;
                     len = len - bc;

                     assert( len >= 0 );

                     memmove( p, p + bc, len );
                  } else if (number == end) {
                     ++ec;
                     len =  ec > len ? len : ec;
                  }
               }

               assert( len >= 0 );
               assert( len < MAX_LINE_LENGTH );

               if (fwrite( p, sizeof( char ), len, fp ) < (unsigned)len ||
                       ceh.flag == ERROR)
                  rc = ERROR;

             
               write_eol = TRUE;
               if (number == end) {
                  if (file->crlf == CRLF ||  file->crlf == LF) {
                     if (len > 0  &&  *(p + len - 1) == '\x1a') {
                        write_eol = FALSE;
                        write_z = FALSE;
                     }
                  }
               }

               if (write_eol == TRUE  &&  rc != ERROR  &&
                     fwrite( eol, sizeof( char ), eol_count, fp ) < eol_count
                     || ceh.flag == ERROR)
                  rc = ERROR;
               ll = ll->next;
               if (ll == NULL)
                  rc = ERROR;
            }
         }
         if (rc != ERROR  &&  write_z) {
            if (fwrite( z, sizeof( char ), 1, fp ) < 1 || ceh.flag == ERROR)
               rc = ERROR;
         }
         g_status.copied = FALSE;
         if (ceh.flag != ERROR) {
            if (fclose( fp ) != 0)
               rc = ERROR;
         }
      }
   }
   return( rc );
}



int hw_save( char *name, file_infos *file, long start, long end, int block )
{
   return( write_file( name, OVERWRITE, file, start, end, block ) );
}



int hw_append( char *name, file_infos *file, long start, long end, int block )
{
   return( write_file( name, APPEND, file, start, end, block ) );
}


/*
 * 作用: 把一個文件加載到文本指針數組中To load a file into the array of text pointers.
 * 參數:  name:       磁盤文件的名字
 *          fp:       指向文件結構的指針
 *          file_mode:  二進制或者文本
 *          bin_len:    如果是二進制模式打開的,節點行的長度
 * 返回值: 如果錯誤發生返回ERROR,否則OK
 */
int  load_file( char *name, file_infos *fp, int *file_mode, int bin_len )
{
FILE *stream;                           
int  rc;
char buff[MAX_COLS+2];
char line_buff[(MAX_COLS+2)*2];         
text_ptr l;
line_list_ptr ll;
line_list_ptr temp_ll;
unsigned long line_count;
char *e;
char *residue;
int  len;
int  res;
size_t t1, t2;
int  crlf;
int  prompt_line;

   /*
    * 初始化計數器和指針
    */
   rc = OK;
   len = 1;
   line_count = 0;
   res = 0;
   residue = g_status.line_buff;
   prompt_line = g_display.nlines;
   fp->length  = 0;
   fp->undo_count = 0;
   fp->undo_top = fp->undo_bot = NULL;
   fp->line_list_end = fp->line_list = NULL;
   ll = (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );

   if (ll != NULL) {
      ll->dirty = FALSE;
      ll->len   = EOF;
      ll->line  = NULL;
      ll->next  = ll->prev = NULL;
      fp->undo_top = fp->undo_bot = ll;
   }

   ll = (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );

   if (ll != NULL) {
      ll->dirty = FALSE;
      ll->len   = EOF;
      ll->line  = NULL;
      ll->next  = ll->prev = NULL;
      fp->line_list_end = fp->line_list = ll;
   }

   if ((stream = fopen( name, "rb" )) == NULL || ceh.flag == ERROR ||
         rc == ERROR) {
      /*
       * 沒有找到文件或者加載的時候除了問題
       */
      combine_strings( buff, main7a, name, main7b );
      save_screen_line( 0, prompt_line, line_buff );
      set_prompt( buff, prompt_line );
      getkey( );
      restore_screen_line( 0, prompt_line, line_buff );
      if (fp->line_list != NULL)
         my_free( fp->line_list );
      if (fp->undo_top != NULL)
         my_free( fp->undo_top );
      rc = ERROR;
   } else {
      if (*file_mode == BINARY) {
         mode.trailing = FALSE;
         crlf = BINARY;
         if (bin_len < 0  ||  bin_len > READ_LENGTH)
            bin_len = DEFAULT_BIN_LENGTH;
         for (; rc == OK;) {
            t1 = fread( g_status.line_buff, sizeof(char), bin_len, stream );
            if (ferror( stream )  ||  ceh.flag == ERROR) {
               combine_strings( buff, "error reading file '", name, "'" );
               error( WARNING, prompt_line, buff );
               rc = ERROR;
            } else if (t1) {

               assert( t1 < MAX_LINE_LENGTH );

               l = (text_ptr)my_malloc( t1 * sizeof(char), &rc );
               temp_ll = (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );

               if (rc != ERROR) {

                  /*
                   * 如果沒有問題,把io緩存區中文本拷貝到內存中
                   */
                  if (t1 > 0)
                     _fmemcpy( l, g_status.line_buff, t1 );

                  ++line_count;
                  temp_ll->line = l;
                  temp_ll->dirty = FALSE;
                  temp_ll->len  = t1;
                  insert_node( fp, ll, temp_ll );
                  ll = temp_ll;
               } else
                  rc = show_file_2big( name, prompt_line, temp_ll, l );
            } else
               break;
         }
      } else {
         crlf = LF;
         for (; rc == OK;) {
            t1 = fread( g_status.line_buff, sizeof(char), READ_LENGTH, stream );
            if (ferror( stream )  ||  ceh.flag == ERROR) {
               combine_strings( buff, "error reading file '", name, "'" );
               error( WARNING, prompt_line, buff );
               rc = ERROR;
            } else {

               /*
                * "e" 遍歷緩存區1來找到文件尾。 
                * "t1"保存緩存區1中的字符數
                */
               e = g_status.line_buff;
               while (t1 && rc == OK) {

                  /*
                   * 當t1非空,并且len比最大值小,讓e一直遍歷直到碰到<LF>.
                   */
                  for (; t1 && len < READ_LENGTH &&  *e != '\n'; len++, e++, t1--);

                  /*
                   * 當t1非空,e遍歷到碰到<LF>或者超過最大值
                   */
                  if (t1  ||  len >= READ_LENGTH) {

                     if (len > 1 && *e == '\n') {
                        if (len - res == 1) {
                           if (*(residue + res - 1) == '\r') {
                              --len;
                              --res;
                              crlf = CRLF;
                           }
                        } else {
                           if (*(e - 1) == '\r') {
                              --len;
                              crlf = CRLF;
                           }
                        }
                     }
                     if (len > 0)
                        --len;

                     assert( len >= 0 );
                     assert( len < MAX_LINE_LENGTH );

                     /*
                      * 為我們剛剛讀入的行分配空間
                      */
                     l = (text_ptr)my_malloc( len * sizeof(char), &rc );
                     temp_ll =
                       (line_list_ptr)my_malloc( sizeof(line_list_struc), &rc );

                     if (rc != ERROR) {

                        /*
                         * 如果一切正常,把io緩存中的內容拷貝到內存中去
                         * "residue" 跟蹤io緩存中的行首
                         */
                        if (res > 0) {

                           assert( res >= 0 );
                           assert( len - res >= 0 );

                           if (res > 0)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品中文字幕一区二区| 欧美午夜视频网站| 色婷婷国产精品综合在线观看| 欧美群妇大交群的观看方式| 国产欧美日韩另类视频免费观看| 亚洲精品免费在线观看| 国产老女人精品毛片久久| 欧美日韩国产在线观看| 国产精品萝li| 国产电影精品久久禁18| 91精品国产日韩91久久久久久| 亚洲免费av高清| 成人午夜视频在线观看| 精品福利一二区| 午夜av一区二区三区| 一本大道久久a久久精二百| 日本一区二区三级电影在线观看 | 欧美无砖砖区免费| 1024精品合集| 不卡免费追剧大全电视剧网站| 日韩欧美国产三级| 青青草原综合久久大伊人精品| 日本韩国视频一区二区| 国产精品久久精品日日| 国产成a人亚洲精| 久久久高清一区二区三区| 久久草av在线| 精品第一国产综合精品aⅴ| 日韩国产成人精品| 欧美精品自拍偷拍| 日本欧美在线看| 制服丝袜亚洲播放| 免费看欧美女人艹b| 欧美一区二区三区色| 奇米综合一区二区三区精品视频| 欧美日韩免费观看一区三区| 亚洲国产综合色| 91麻豆精品国产91久久久 | 91色视频在线| 亚洲女性喷水在线观看一区| 91亚洲资源网| 亚洲成人高清在线| 日韩一区二区免费在线电影| 久99久精品视频免费观看| 欧美变态口味重另类| 国产成人丝袜美腿| 日本一区二区三区国色天香| 色先锋资源久久综合| 亚洲图片自拍偷拍| 精品国精品国产| 不卡大黄网站免费看| 亚洲欧美激情视频在线观看一区二区三区| 色噜噜狠狠色综合欧洲selulu| 亚洲永久精品大片| 欧美日韩1234| 国产成人精品一区二区三区网站观看| 国产精品久久看| 欧美色国产精品| 国产自产高清不卡| 亚洲男同性恋视频| 91精品一区二区三区久久久久久| 国内精品伊人久久久久av影院| 一区在线播放视频| 欧美乱妇15p| 高清日韩电视剧大全免费| 樱花草国产18久久久久| 日韩精品专区在线影院重磅| 成人免费的视频| 婷婷国产在线综合| 中文字幕乱码一区二区免费| 欧美中文字幕久久| 国产一区二区伦理| 亚洲一区电影777| 26uuu色噜噜精品一区二区| 久久奇米777| 91在线你懂得| 亚洲一区二区三区四区在线 | 日本一区二区电影| 欧美日韩一区二区三区在线| 国产成人一区二区精品非洲| 亚洲一区二区三区视频在线 | 亚洲va中文字幕| 国产精品麻豆久久久| 91在线观看一区二区| 男男gaygay亚洲| 日本美女一区二区三区视频| 国产欧美日韩三级| 欧美乱熟臀69xxxxxx| 色综合天天综合网天天看片| 精品午夜久久福利影院 | 在线观看日韩电影| 国产成人av自拍| 狠狠网亚洲精品| 午夜精品久久久久久久久| 中文字幕中文字幕一区| 久久这里都是精品| 制服丝袜亚洲精品中文字幕| 一本一道综合狠狠老| 国产福利一区二区三区| 美腿丝袜一区二区三区| 亚洲一区二区高清| 中文字幕一区二区在线播放| 久久久国产一区二区三区四区小说| 欧美挠脚心视频网站| 日本道免费精品一区二区三区| 成人黄色av电影| 国产成人精品一区二| 国产成人免费9x9x人网站视频| 精彩视频一区二区| 老司机精品视频一区二区三区| 亚洲国产中文字幕| 亚洲网友自拍偷拍| 亚洲一区二区三区四区在线观看 | 欧美日韩精品高清| 91电影在线观看| 欧美色视频一区| 欧美日韩aaaaaa| 91精品欧美福利在线观看| 欧美人牲a欧美精品| 51久久夜色精品国产麻豆| 欧美一区二区三区四区五区| 欧美一区二区三区免费观看视频| 欧美日本韩国一区| 欧美一卡二卡三卡| 日韩精品一区二区三区中文不卡| 欧美va亚洲va| 日本一区二区三区四区| 中文欧美字幕免费| 国产精品美女久久久久久久久 | 99久久国产综合精品女不卡| 成人av在线播放网站| 色88888久久久久久影院野外| 欧美在线视频你懂得| 欧美精品色一区二区三区| 91精品欧美久久久久久动漫 | 91精品国产91久久久久久最新毛片| 欧美男生操女生| 欧美成人video| 亚洲国产精品成人综合色在线婷婷| 国产精品护士白丝一区av| 亚洲一区二区五区| 视频一区二区三区在线| 国产在线播放一区三区四| 99精品欧美一区二区三区综合在线| 色噜噜偷拍精品综合在线| 欧美日韩成人综合天天影院 | 4438亚洲最大| 国产日本欧洲亚洲| 亚洲色图在线看| 蜜桃视频一区二区三区| 国产91丝袜在线播放0| 欧美在线你懂得| 久久久精品国产免大香伊| 亚洲日本在线a| 精彩视频一区二区三区| 在线免费不卡视频| 日韩免费在线观看| 亚洲视频一二三区| 激情综合一区二区三区| 欧美在线999| 久久久精品国产99久久精品芒果| 亚洲午夜激情av| 国产福利一区二区三区| 91精品欧美久久久久久动漫 | 亚洲欧洲一区二区在线播放| 日韩av高清在线观看| 成人高清伦理免费影院在线观看| 欧美裸体bbwbbwbbw| 最近日韩中文字幕| 韩国三级电影一区二区| 欧美日韩一区二区三区不卡| 日本一区二区三区国色天香| 秋霞影院一区二区| 91国产丝袜在线播放| 国产精品视频一二三| 久久精品99国产精品| 欧美疯狂性受xxxxx喷水图片| 国产精品久久久久久久久果冻传媒| 日韩av一区二区三区四区| 欧洲国产伦久久久久久久| 国产精品久久久久久久第一福利| 国产一区二区在线看| 日韩一区二区电影网| 亚洲在线免费播放| www.久久久久久久久| 久久这里只有精品首页| 美女视频黄久久| 日韩一级免费观看| 日韩专区在线视频| 欧美色精品在线视频| 亚洲最快最全在线视频| 97精品国产露脸对白| 国产精品久久午夜| 成人18精品视频| 国产精品二三区| 91免费观看视频在线| 亚洲欧洲日韩一区二区三区| 波多野结衣欧美| 欧美激情一二三区| 成人手机在线视频|