亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
色爱区综合激月婷婷| 色婷婷av一区二区三区之一色屋| 亚洲综合丁香婷婷六月香| 国产视频不卡一区| 国产女人水真多18毛片18精品视频| 2020国产精品久久精品美国| www国产精品av| 中文字幕一区二区三区在线不卡 | 国产精品一区二区三区99| 日本 国产 欧美色综合| 久久成人免费网| 国产激情偷乱视频一区二区三区| 丁香一区二区三区| 日本丰满少妇一区二区三区| 欧美人狂配大交3d怪物一区| 欧美一级二级三级蜜桃| 久久精品人人做人人综合| 国产精品毛片a∨一区二区三区| 日韩一区在线看| 亚洲一区二区三区四区中文字幕| 亚洲777理论| 韩国精品久久久| 99国产精品久久久久久久久久久| 精品视频免费在线| 久久综合五月天婷婷伊人| √…a在线天堂一区| 日韩国产精品久久久| 国产精品996| 欧美日韩色一区| 久久久www成人免费无遮挡大片| 国产精品嫩草99a| 日韩一区精品字幕| 不卡的电视剧免费网站有什么| 欧美在线一二三四区| 精品成人a区在线观看| 一区二区视频在线| 国产一区二区中文字幕| 日本精品一区二区三区高清| 精品国产污网站| 天堂成人国产精品一区| 不卡av免费在线观看| 日韩一区二区精品在线观看| 最新国产成人在线观看| 久久91精品国产91久久小草| 欧美羞羞免费网站| 国产精品毛片高清在线完整版| 日韩国产欧美视频| 欧美在线free| 国产精品久久久久桃色tv| 久久精品国产77777蜜臀| 欧洲国内综合视频| 亚洲国产成人私人影院tom| 美女免费视频一区| 欧美性大战xxxxx久久久| 国产精品久久久久aaaa| 国产精品一品视频| 精品少妇一区二区三区日产乱码| 一区二区国产视频| 91在线高清观看| 国产日韩精品一区二区三区| 日韩黄色片在线观看| 欧美亚洲一区二区在线观看| 亚洲视频你懂的| 成人美女视频在线看| 26uuu久久天堂性欧美| 美女视频第一区二区三区免费观看网站| 日本黄色一区二区| 亚洲日本欧美天堂| 99精品一区二区三区| 亚洲少妇30p| 91网上在线视频| 中文字幕一区二区三中文字幕| 高清国产一区二区| 亚洲欧洲av另类| 色诱视频网站一区| 亚洲国产视频一区二区| 欧美日韩极品在线观看一区| 亚洲1区2区3区视频| 日韩一区二区三区四区五区六区 | 26uuu久久综合| 国产一区999| 国产精品久99| 色94色欧美sute亚洲13| 亚洲香肠在线观看| 91精品国产麻豆| 国产激情一区二区三区桃花岛亚洲| 国产亚洲综合在线| 色狠狠一区二区三区香蕉| 亚洲午夜国产一区99re久久| 欧美日本高清视频在线观看| 久久国内精品自在自线400部| 久久综合成人精品亚洲另类欧美| 国产99久久久国产精品潘金| 亚洲精品国产无天堂网2021| 7777精品伊人久久久大香线蕉完整版 | 亚洲自拍与偷拍| 3atv在线一区二区三区| 激情五月婷婷综合| 中文字幕视频一区二区三区久| 欧美丝袜丝nylons| 国产精华液一区二区三区| 亚洲日本护士毛茸茸| 日韩视频一区二区三区| av亚洲产国偷v产偷v自拍| 亚洲一二三区在线观看| 久久一留热品黄| 欧美亚男人的天堂| 国产精品一区二区三区四区| 一区二区三区四区国产精品| 精品国产伦一区二区三区观看方式| 99久久精品免费精品国产| 久久精品国产在热久久| 亚洲猫色日本管| 精品国产麻豆免费人成网站| 91高清在线观看| 国产老女人精品毛片久久| 艳妇臀荡乳欲伦亚洲一区| 亚洲精品在线网站| 欧美日韩综合不卡| 波多野结衣视频一区| 精品一区二区在线免费观看| 一区二区三区精品在线| 精品sm在线观看| 欧美精品亚洲一区二区在线播放| www.在线成人| 国产一区二区三区在线观看精品| 亚洲国产中文字幕在线视频综合| 欧美激情在线一区二区三区| 欧美一二三区在线观看| 欧美三级视频在线观看| 99国产欧美另类久久久精品| 精品一区二区久久| 美女脱光内衣内裤视频久久网站| 亚洲精品国产精品乱码不99| 国产精品日产欧美久久久久| 久久这里只有精品6| 日韩免费在线观看| 91精品国产综合久久精品麻豆| 色悠久久久久综合欧美99| av一区二区不卡| av一二三不卡影片| av午夜精品一区二区三区| 国产精品自拍三区| 久久精品二区亚洲w码| 青青草91视频| 久久国产综合精品| 激情小说亚洲一区| 国产一区在线精品| 免费在线看一区| 久久99精品久久久久久动态图| 免费人成在线不卡| 久久99精品久久久久久| 麻豆成人综合网| 久草在线在线精品观看| 国产又黄又大久久| 成人激情视频网站| 91一区一区三区| 色综合一区二区| 91福利国产精品| 91精品麻豆日日躁夜夜躁| 精品视频1区2区| 欧美一区二区播放| 久久免费的精品国产v∧| 欧美国产激情二区三区| 国产精品美女久久久久久| 亚洲欧美色综合| 日韩电影网1区2区| 国产在线视频精品一区| 成人av在线资源网站| 日本久久精品电影| 日韩免费观看2025年上映的电影 | 91精品免费在线观看| 日韩精品一区二区三区在线播放| 精品国产髙清在线看国产毛片| 国产亚洲欧美在线| 一区二区三区欧美在线观看| 日韩精品乱码av一区二区| 国产一区二区视频在线播放| 99久久久精品免费观看国产蜜| 色综合天天天天做夜夜夜夜做| 91精品国产高清一区二区三区蜜臀| 久久影院午夜论| 一区二区三区在线高清| 美女网站色91| 色综合天天综合给合国产| 91精品国产综合久久精品| 国产精品三级视频| 免费在线观看一区| 色综合天天性综合| 久久一二三国产| 亚洲制服丝袜av| 国产成人午夜高潮毛片| 91精品啪在线观看国产60岁| 日本一区二区不卡视频| 日韩中文字幕一区二区三区| 成人av网址在线观看| 欧美α欧美αv大片| 一区二区三区成人| 高清av一区二区| 日韩午夜av一区|