home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / c3.doc / lb03.d < prev    next >
Encoding:
Text File  |  1988-05-17  |  87.9 KB  |  2,175 lines

  1.                                       - 137 -
  2.                                           
  3.                                      
  4.             
  5.                INP
  6.       
  7.                #include <conio.h>      ΓαÑíπÑΓß∩  Γ«½∞¬«   ñ½∩  «íΩ∩ó½Ñ¡¿∩
  8.                                        Σπ¡¬µ¿¿
  9.                int inp(port);
  10.                unsigned port;          ¡«¼Ñα »«αΓá
  11.             
  12.                Ä»¿ßá¡¿Ñ.
  13.             
  14.                öπ¡¬µ¿∩  inp τ¿ΓáÑΓ 1 íá⌐Γ ¿º »«αΓá óó«ñá, «»αÑñѽѡ¡«ú« »«
  15.          port. Çαúπ¼Ñ¡Γ port ¼«ªÑΓ íδΓ∞ ½εíδ¼ íѺº¡á¬«óδ¼ µÑ½δ¼  τ¿ß½«¼  ó
  16.          »αÑñѽáσ «Γ 0 ñ« 65535.
  17.             
  18.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  19.             
  20.                öπ¡¬µ¿∩ inp ó«ºóαáΘáÑΓ »α«τ¿Γá¡¡δ⌐ íá⌐Γ ¿º port. é«ºóαáΘáÑ-
  21.          ¼«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  22.                æ¼«Γα¿ ΓᬪѠoutput.
  23.  
  24.                                      
  25.                Åα¿¼Ñα:
  26.             
  27.                #include <conio.h>
  28.                unsigned port;
  29.                char result;
  30.                .
  31.                .
  32.                .
  33.                /*  ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óó«ñ¿Γ Γ«Γ íá⌐Γ ¿º »«αΓá, ¡á ¬«Γ«αδ⌐
  34.          πßΓá¡«ó½Ñ¡ port */
  35.             
  36.                result=inp(port);
  37.                INT86
  38.                #include <dos.h>
  39.                int int86(intno,inregs,outregs);
  40.                int ntno;                     ¡«¼Ñα (τ¿ß½«) »αÑαδóá¡¿∩ º¡á-
  41.                union REGS *inregs;           τÑ¡¿∩  αÑú¿ßΓα«ó  »α¿ ó맮óÑ
  42.                union REGS *outregs;          º¡áτÑ¡¿∩  αÑú¿ßΓα«ó  »α¿ ó«º-
  43.                                              óαáΓÑ
  44.                 
  45.                Ä»¿ßá¡¿Ñ.
  46.                 
  47.                öπ¡¬µ¿∩ int86 óδ»«½¡∩ÑΓ »αÑαδóá¡¿Ñ 8086 »α«úαá¼¼¡«ú«  «íÑß-
  48.          »ÑτÑ¡¿∩,  ¬«Γ«α«Ñ  «»αÑñѽѡ« ¡«¼Ñα«¼ »αÑαδóá¡¿∩ intno. ÅÑαÑñ óδ-
  49.          »«½¡Ñ¡¿Ñ¼ »αÑαδóá¡¿∩ int86 ¬«»¿απÑΓ ß«ñÑন¼«Ñ inregs ó ß««ΓóÑΓß-
  50.          ΓóπεΘ¿Ñ αÑú¿ßΓαδ. Å«ß½Ñ ó«ºóαáΓá »αÑαδóá¡¿∩ Σπ¡¬µ¿∩ ¬«»¿απÑΓ º¡á-
  51.          τÑ¡¿Ñ ΓѬπΘÑú« αÑú¿ßΓαá ó outregs. Ä¡á ΓᬪѠ¬«»¿απÑΓ ßΓáΓπß  »Ñ-
  52.          αÑ¡«ß¿¼«ú«  Σ½áúá  ß¿ßΓÑ¼δ  ó »«½Ñ cflag, ß«ñÑαªáΘÑÑß∩ ó outregs.
  53.          Çαúπ¼Ñ¡Γδ inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS.  Æ¿»
  54.          «íΩÑñ¿¡Ñ¡¿∩ «íΩ∩ó½Ñ¡ ó include-Σá⌐½Ñ <dos.h>. êß»«½∞º«óá¡¿Ñ Σπ¡¬-
  55.          µ¿¿ int86 »αÑñ¡áº¡áτÑ¡« ñ½∩ ó맮ó«ó »αÑαδóá¡¿⌐ DOS.
  56.                 
  57.                 
  58.  
  59.                                       - 138 -
  60.  
  61.                
  62.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  63.          
  64.                é«ºóαáΘáÑ¼δ¼ º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ º¡áτÑ¡¿Ñ ó αÑú¿ßΓαÑ AX »«ß-
  65.          ½Ñ ó«ºóαáΓá »αÑαδóá¡¿∩. àß½¿ »«½Ñ cflag ó outregs ¡Ñ¡π½Ñó«Ñ, ó«º-
  66.          ¡¿¬áÑΓ «Φ¿í¬á ¿ »ÑαѼѡ¡á∩ _doserrno ΓᬪѠπßΓá¡áó½¿óáÑΓ ß««ΓóÑΓ-
  67.          ßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
  68.                æ¼«Γα¿ ΓᬪѠbdos, intdos, intdosx, int86x.
  69.                 
  70.                Åα¿¼Ñα:
  71.                 
  72.                #include <signal.h>
  73.                #include <dos.h>
  74.                #include <stdio.h>
  75.                #include <process.h>
  76.                 
  77.                /*  »αÑαδóá¡¿Ñ  ¡«¼Ñα 0σ23, »«ñσóáΓδóáѼ«Ñ »α«µÑñπα«⌐ «íαá-
  78.          í«Γ¬¿ »αÑαδóá¡¿⌐ int_handler.  çá¼Ñτá¡¿Ñ:  ç¡áτÑ¡¿∩  ó  ßΓαπ¬ΓπαÑ
  79.          regs ¡Ñ ¿¼ÑεΓ ß¼δß½á ñ½∩ φΓ«ú« »αÑαδóá¡¿∩. */
  80.                 
  81.                #define CNTRL_C 0x23
  82.                int int_handler(int);
  83.                union REGS regs;
  84.                .
  85.                .
  86.                .
  87.                signal (SIGINT, int_handler);
  88.                .
  89.                .
  90.                .
  91.                int86 (CNTRL_C, ®s, ®s);
  92.                
  93.                
  94.                INT86X
  95.                 
  96.                #include <dos.h>
  97.                int int86x(intno,inregs,outregs,segregs);
  98.                int intno;                    ¡«¼Ñα (τ¿ß½«) »αÑαδóá¡¿⌐
  99.                union REGS *inregs;           º¡áτÑ¡¿Ñ  αÑú¿ßΓα«ó  »α¿
  100.                                              ó맮óÑ
  101.                union REGS *outregs;          º¡áτÑ¡¿Ñ  αÑú¿ßΓα«ó  »α¿
  102.                                              ó«ºóαáΓÑ
  103.                struct SREGS *segregs;        º¡áτÑ¡¿Ñ  ßÑú¼Ñ¡Γ«ó  »α¿
  104.                                              ó맮óÑ
  105.              
  106.  
  107.                                      
  108.                Ä»¿ßá¡¿Ñ.
  109.                 
  110.                öπ¡¬µ¿∩ int86x óδ»«½¡∩ÑΓ »αÑαδóá¡¿Ñ 8086 »α«úαá¼¼¡«ú« «íÑß-
  111.          »ÑτÑ¡¿∩,  ¬«Γ«α«Ñ  «»αÑñѽѡ« ¡«¼Ñα«¼ »αÑαδóá¡¿∩ intno. é «Γ½¿τ¿Ñ
  112.          «Γ Σπ¡¬µ¿¿ int86, Σπ¡¬µ¿∩ int86x »α¿¡¿¼áÑΓ º¡áτÑ¡¿∩ αÑú¿ßΓαá ßÑú-
  113.          ¼Ñ¡Γá ó segregs, »«ºó«½∩∩ »α«úαá¼¼á¼, ¿ß»«½∞ºπεΘ¿¼ ßÑú¼Ñ¡Γδ  ñá¡-
  114.          ¡δσ  í«½∞Φ«⌐  ¼«ñѽ¿ ¿½¿ far-π¬áºáΓѽ¿, «»αÑñѽ∩Γ∞, ¬á¬«⌐ ßÑú¼Ñ¡Γ
  115.          ¿½¿ π¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ ¿ß»«½∞º«óá¡ ó »α«µÑßßÑ ß¿ßΓѼ¡«ú« ó맮-
  116.          óá. ÅÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ «»αÑñѽѡ¡«ú«  »αÑαδóá¡¿∩  int86x  ¬«»¿απÑΓ
  117.          ß«ñÑন¼«Ñ inregs ¿ segregs ó ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. é segregs
  118.          ¿ß»«½∞ºπεΓß∩  Γ«½∞¬«  º¡áτÑ¡¿∩  αÑú¿ßΓα«ó DS ¿ ES. Å«ß½Ñ ó«ºóαáΓá
  119.  
  120.                                       - 139 -
  121.          
  122.          
  123.          »αÑαδóá¡¿⌐ Σπ¡¬µ¿∩ ¬«»¿απÑΓ º¡áτÑ¡¿∩ ΓѬπΘÑú« αÑú¿ßΓαá ó  outregs
  124.          ¿  »ÑαѺỿßδóáÑΓ DS. Ä¡á ΓᬪѠ¬«»¿απÑΓ ß«ßΓ«∩¡¿Ñ (ßΓáΓπß) »ÑαÑ-
  125.          ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ cflag, ß«ñÑαªáΘÑÑß∩ ó outregs.  Çα-
  126.          úπ¼Ñ¡Γδ  inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS. Çαúπ-
  127.          ¼Ñ¡Γ segregs ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα«⌐ Γ¿»á SREGS. ¥Γ¿ Γ¿»δ «íΩ∩ó½Ñ¡δ ó
  128.          include-Σá⌐½Ñ <dos.h>. êß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿¿ int86x »αÑñ¡áº¡áτÑ¡«
  129.          ñ½∩ »α∩¼«ú« ó맮óá »αÑαδóá¡¿⌐ DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γ  ó  αÑ-
  130.          ú¿ßΓαÑ  ES  ¿½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DS, ¬«Γ«α«Ñ «Γ½¿τáÑΓß∩ «Γ π¼á½-
  131.          τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ.
  132.                 
  133.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  134.                 
  135.                é«ºóαáΘáÑ¼δ¼ º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ º¡áτÑ¡¿Ñ ó αÑú¿ßΓαÑ AX »«ß-
  136.          ½Ñ ó«ºóαáΘÑ¡¿∩ »αÑαδóá¡¿⌐. àß½¿ »«½Ñ flag ó outregs ∩ó½∩ÑΓß∩  ¡Ñ-
  137.          ¡π½Ñóδ¼, ó«º¡¿¬áÑΓ «Φ¿í¬á ¿ »ÑαѼѡ¡á∩ _doserrno ΓᬪѠπßΓá¡áó½¿-
  138.          óáÑΓ ß««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
  139.                æ¼.ΓᬪѠbdos, intdos, intdosx, int86, segread, FP_SEG.
  140.                 
  141.                çá¼Ñτá¡¿Ñ!  ç¡áτÑ¡¿∩  ßÑú¼Ñ¡Γá  ñ½∩  áαúπ¼Ñ¡Γá segreg ¼«úπΓ
  142.          íδΓ∞ »«½πτÑ¡δ ½¿í« »α¿ ¿ß»«½∞º«óá¡¿¿ Σπ¡¬µ¿¿ segread, ½¿í«  ¼á¬α«
  143.          FP_SEG.
  144.       
  145.                Åα¿¼Ñα:
  146.                 
  147.                #include <signal.h>
  148.                #include <dos.h>
  149.                #include <stdio.h>
  150.                #include <process.h>
  151.                 
  152.                /* »α«µÑñπαá int86x ¿ß»«½∞ºπÑΓß∩ ñ½∩ úÑ¡Ñα¿α«óá¡¿∩ »αÑαδóá-
  153.          ¡¿∩ 0σ21 (ß¿ßΓѼ¡δ⌐ ó맮ó), ¬«Γ«αδ⌐, ó ßó«ε «τÑαÑñ∞, á¬Γ¿ó¿º¿απÑΓ
  154.          ß¿ßΓѼ¡δ⌐  ó맮ó  "꺼ѡѡ¿Ñ  áΓα¿íπΓ«ó"  DOS. çñÑß∞ ¿ß»«½∞ºπÑΓß∩
  155.          »α«µÑñπαá int86x, »«ß¬«½∞¬π ßßδ½¬á ¡á ¿¼∩ Σá⌐½á ¼«ªÑΓ  ¡áσ«ñ¿Γ∞ß∩
  156.          ó ßÑú¼Ñ¡ΓÑ, «Γ½¿τ¡«¼ «Γ π¼á½τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ (ßßδ½¬á »α¿
  157.          »«¼«Θ¿  far-π¬áºáΓѽ∩), »«φΓ«¼π αÑú¿ßΓα DS ¼«ªÑΓ íδΓ∞ Γ«τ¡« πßΓá-
  158.          ¡«ó½Ñ¡ ß« ßΓαπ¬Γπα«⌐ SREGS. */
  159.                 
  160.                #define SYSCALL 0x21
  161.                /* INT 21H óδºδóáÑΓ ß¿ßΓѼ¡δÑ ó맮óδ */
  162.                #define CHANGE_ATTR 0x43
  163.                /* ß¿ßΓѼ¡δ⌐ ó맮ó 43H - ¿º¼Ñ¡Ñ¡¿∩ áΓα¿íπΓ«ó */
  164.                char far *filename;
  165.                /* ¿¼∩ Σá⌐½á ó far-ßÑú¼Ñ¡ΓÑ ñá¡¡δσ */
  166.                union REGS inregs, outregs;
  167.                struct SREGS segregs;
  168.                int result;
  169.                .
  170.                .
  171.                .
  172.                inregs.h.ah=CHANGE_ATTR;
  173.                /* AH - ¡«¼Ñα (τ¿ß½«) ß¿ßΓѼ¡«ú« ó맮óá */
  174.                inregs.h.al=0;
  175.                /* AL - Σπ¡¬µ¿∩ ó맮óá áΓα¿íπΓ«ó */
  176.                inregs.x.dx=FP_OFF(filename);
  177.                /* DS:DX π¬áºδóáεΓ ¡á ¿¼∩ Σá⌐½á */
  178.  
  179.                                       - 140 -
  180.          
  181.          
  182.                segregs.ds=FP_SEG(filename);
  183.                result=int86x(SYSCALL,&inregs,&outregs,&segregs);
  184.                if (outregs.x.cflag) {
  185.                    printf("can't get attributes of file; error
  186.                            number %d\n", result);
  187.                    exit(1);
  188.                    }
  189.                else {
  190.                    printf("Attribs=%#x\n", outregs.x.cx);
  191.                    }
  192.                 
  193.                INTDOS
  194.                 
  195.                 
  196.                #include <dos.h>
  197.                int intdos(inregs, outregs);
  198.                union REGS *inregs;           º¡áτÑ¡¿∩  αÑú¿ßΓα«ó  »α¿
  199.                                              ó맮óÑ
  200.                union REGS *outregs;          º¡áτÑ¡¿∩  αÑú¿ßΓα«ó  »α¿
  201.                                              ó«ºóαáΓÑ
  202.                 
  203.                Ä»¿ßá¡¿Ñ.
  204.                 
  205.                öπ¡¬µ¿∩ intdos «ßπΘÑßΓó½∩ÑΓ óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« ó맮óá MS
  206.          DOS, ¬«Γ«αδ⌐ «»αÑñѽѡ º¡áτÑ¡¿Ñ¼ αÑú¿ßΓα«ó, «íΩ∩ó½Ñ¡¡δσ ó inregs,
  207.          ¿ ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ ß¿ßΓѼ¡«ú«  ó맮óá  ó  outregs.  Çαúπ¼Ñ¡Γδ
  208.          inregs  ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS. Æ¿» «íΩÑñ¿¡Ñ-
  209.          ¡¿∩ «íΩ∩ó½Ñ¡ ó include-Σá⌐½Ñ <dos.h>.
  210.                ä½∩ «ßπΘÑßΓó½Ñ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá intdos óδ»«½¡∩ÑΓ ¬«¼á¡-
  211.          ñπ INT 21H. ÅÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ¬«¼á¡ñδ Σπ¡¬µ¿∩ ¬«»¿απÑΓ ß«ñÑন¼«Ñ
  212.          inregs ó ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. Å«ß½Ñ  ó«ºóαáΓá  ¬«¼á¡ñδ  INT,
  213.          intdos  ¬«»¿απÑΓ  º¡áτÑ¡¿Ñ ΓѬπΘÑú« αÑú¿ßΓαá ó outregs. Ä¡á ΓᬪÑ
  214.          ¬«»¿απÑΓ ßΓáΓπß »ÑαÑ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ  cflag,  αẼÑ-
  215.          ΘÑ¡¡«Ñ ó outregs. àß½¿ φΓ« »«½Ñ ∩ó½∩ÑΓß∩ ¡Ñ¡π½Ñóδ¼, Σ½áú πßΓá¡áó-
  216.          ½¿óáÑΓß∩ ß¿ßΓѼ¡δ¼ óδº«ó«¼ ¿ π¬áºδóáÑΓ ¡á πß½«ó¿Ñ «Φ¿í¬¿.
  217.                öπ¡¬µ¿∩  intdos ¿ß»«½∞ºπÑΓß∩ ñ½∩ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡δσ ó맮-
  218.          ó«ó DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γδ  ó  αÑú¿ßΓαáσ,  «Γ½¿τ¡δσ  «Γ  DX
  219.          (DH/DL) ¿ AL, ¿½¿ ñ½∩ ß¿ßΓѼ¡δσ ó맮ó«ó, ¬«Γ«αδÑ «»αÑñѽ∩εΓ «Φ¿í-
  220.          ¬¿ »«ßαÑñßΓó«¼ »ÑαÑ¡«ß¿¼«ú« Σ½áúá.
  221.                 
  222.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  223.                 
  224.                öπ¡¬µ¿∩ intdos ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX »«ß½Ñ ºáóÑα-
  225.          ΦÑ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá. àß½¿ »«½Ñ cflag ó outregs ∩ó½∩ÑΓß∩ ¡Ñ¡π-
  226.          ½Ñóδ¼,  ó«º¡¿¬áÑΓ «Φ¿í¬á  ¿ _doserrno πßΓá¡áó½¿óáÑΓ ß««ΓóÑΓßΓóπε-
  227.          Θ¿⌐ ¬«ñ «Φ¿í¬¿.
  228.                æ¼.ΓᬪѠbdos, intdosx.
  229.                 
  230.                Åα¿¼Ñα:
  231.                 
  232.                 
  233.                #include <dos.h>
  234.                #include <stdio.h>
  235.                union REGS inregs, outregs;
  236.                .
  237.  
  238.                                       - 141 -
  239.          
  240.          
  241.                .
  242.                .
  243.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ  óδí¿αáεΓ  ΓѬπΘπε  ñáΓπ,  ¿ß»«½∞ºπ∩
  244.          ΦÑßΓ¡áñµáΓÑα¿τ¡δ⌐ ó맮ó Σπ¡¬µ¿¿ DOS 2a */
  245.                inregs.h.ah=0x2a;
  246.                intdos(&inregs,&outregs);
  247.                printf("date is %d/%d/%d\n", outregs.h.dh,
  248.                        outregs.h.dl, outregs.x.cx);
  249.                                      
  250.       
  251.                INTDOSX
  252.               
  253.                #include <dos.h>
  254.                int intdosx(intno,inregs,outregs,segregs);
  255.                union REGS *inregs;           º¡áτÑ¡¿Ñ  αÑú¿ßΓα«ó  »α¿
  256.                                              ó맮óÑ
  257.                union REGS *outregs;          º¡áτÑ¡¿Ñ  αÑú¿ßΓα«ó  »α¿
  258.                                              ó«ºóαáΓÑ
  259.                struct SREGS *segregs;        º¡áτÑ¡¿Ñ  ßÑú¼Ñ¡Γ«ó  »α¿
  260.                                              ó맮óÑ
  261.  
  262.                Ä»¿ßá¡¿Ñ.
  263.                 
  264.                öπ¡¬µ¿∩  intdosx  «ßπΘÑßΓó½∩ÑΓ óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« ó맮óá
  265.          DOS, ¬«Γ«αδ⌐ «»αÑñѽѡ º¡áτÑ¡¿Ñ¼ αÑú¿ßΓαá, «íΩ∩ó½Ñ¡¡δ¼ ó  inregs,
  266.          ¿  ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ ß¿ßΓѼ¡«ú« ó맮óá ó outregs. é «Γ½¿τ¿¿ «Γ
  267.          Σπ¡¬µ¿¿ intdos, Σπ¡¬µ¿∩ intdosx »α¿¡¿¼áÑΓ º¡áτÑ¡¿∩ αÑú¿ßΓα«ó ßÑú-
  268.          ¼Ñ¡Γá ó segregs, »«ºó«½∩∩ »α«úαá¼¼á¼, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ ßÑú¼Ñ¡Γδ
  269.          ñá¡¡δσ í«½∞Φ«⌐ ¼«ñѽ¿ ¿½¿ far-π¬áºáΓѽ¿, «»αÑñѽ¿Γ∞,  ¬á¬«⌐  ßÑú-
  270.          ¼Ñ¡Γ  ¿½¿ π¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ ¿ß»«½∞º«óá¡ ¡á »α«Γ∩ªÑ¡¿¿ ß¿ßΓѼ-
  271.          ¡«ú« ó맮óá. Çαúπ¼Ñ¡Γδ inregs ¿  outregs  ∩ó½∩εΓß∩  «íΩÑñ¿¡Ñ¡¿∩¼¿
  272.          Γ¿»á  REGS.Çαúπ¼Ñ¡Γ  segregs  ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα«⌐ Γ¿»á SREGS. ¥Γ¿
  273.          Γ¿»δ «íΩ∩ó½Ñ¡δ ó include-Σá⌐½Ñ <dos.h>. ä½∩ á¬Γ¿ó¿ºáµ¿¿ ß¿ßΓѼ¡«-
  274.          ú« ó맮óá Σπ¡¬µ¿∩ intdosx óδ»«½¡∩ÑΓ ¬«¼á¡ñπ INT 21H. ÅÑαÑñ óδ»«½-
  275.          ¡Ñ¡¿Ñ¼ ¬«¼á¡ñδ Σπ¡¬µ¿∩ ¬«»¿απÑΓ ß«ñÑন¼«Ñ inregs ¿ segregs ó ß«-
  276.          «ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. é segregs  ¿ß»«½∞ºπεΓß∩  Γ«½∞¬«  º¡áτÑ¡¿∩
  277.          αÑú¿ßΓα«ó  DS  ¿  ES. Å«ß½Ñ ó«ºóαáΓá ¬«¼á¡ñδ INT intdosx ¬«»¿απÑΓ
  278.          ΓѬπΘÑÑ º¡áτÑ¡¿Ñ αÑú¿ßΓαá ó outregs ¿ »ÑαѺỿßδóáÑΓ DS.
  279.                Ä¡á ΓᬪѠ¬«»¿απÑΓ ßΓáΓπß »ÑαÑ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ
  280.          cflag, αẼÑΘÑ¡¡«Ñ ó outregs. àß½¿ φΓ« »«½Ñ  ∩ó½∩ÑΓß∩  ¡Ñ¡π½Ñóδ¼,
  281.          Σ½áú πßΓá¡áó½¿óáÑΓß∩ »«ßαÑñßΓó«¼ ß¿ßΓѼ¡«ú« ó맮óá ¿ π¬áºδóáÑΓ ¡á
  282.          πß½«ó¿Ñ «Φ¿í¬¿.
  283.                Äí½áßΓ∞  ñÑ⌐ßΓó¿∩  Σπ¡¬µ¿¿ intdosx αáßΦ¿α∩ÑΓß∩ ¿ ¡á «í½áßΓ∞
  284.          ñÑ⌐ßΓó¿∩ ß¿ßΓѼ¡δσ ó맮ó«ó DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γ ó αÑú¿ßΓαÑ
  285.          ES ¿½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DS, «Γ½¿τ¡«Ñ «Γ  π¼á½τ¿óáѼ«ú«  ßÑú¼Ñ¡Γá
  286.          ñá¡¡δσ.
  287.                   
  288.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  289.                   
  290.                Å«ß½Ñ  ºáóÑαΦÑ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá Σπ¡¬µ¿∩ intdosx ó«ºóαá-
  291.          ΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX. àß½¿ »«½Ñ cflag ó outregs ∩ó½∩ÑΓß∩ ¡Ñ-
  292.          ¡π½Ñóδ¼, ó«º¡¿¬áÑΓ «Φ¿í¬á ¿ _doserrno ΓᬪѠ πßΓá¡áó½¿óáÑΓ  ß««Γ-
  293.          óÑΓßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
  294.                æ¼.ΓᬪѠbdos, intdos, segread, FP_SEG.
  295.                   
  296.  
  297.                                       - 142 -
  298.          
  299.          
  300.                çá¼Ñτá¡¿Ñ!  ç¡áτÑ¡¿∩  ßÑú¼Ñ¡Γá  ñ½∩  áαúπ¼Ñ¡Γá segreg ¼«úπΓ
  301.          íδΓ∞ »«½πτÑ¡δ ½¿í« »α¿ ¿ß»«½∞º«óá¡¿¿ Σπ¡¬µ¿¿ segread, ½¿í«  ¼á¬α«
  302.          FP_SEG.
  303.       
  304.                Åα¿¼Ñα:
  305.       
  306.                #include <dos.h>
  307.                union REGS inregs, outregs;
  308.                struct SREGS segregs;
  309.                char far *dir = "/test/bin";
  310.                /*ß½ÑñπεΘ¿⌐  «»ÑαáΓ«α  ºá¼Ñ¡∩ÑΓ  ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐
  311.          óδº«ó«¼ ΦÑß¡áñµáΓÑα¿τ¡«⌐ Σπ¡¬µ¿¿ DOS 36 */
  312.                 inregs.h.ah=0x3b;
  313.                 /* ¿º¼Ñ¡Ñ¡¡δ⌐ ñ¿αÑ¬Γ«α¿⌐ */
  314.                 inregs.x.dx=FP_OFF(dir);
  315.                 /* ¿¼∩ Σá⌐½á offset*/
  316.                 segregs.ds=FP_SEG(dir);
  317.                 /* ¿¼∩ Σá⌐½á ßÑú¼Ñ¡Γá */
  318.                 intdosx(&inregs,&outregs,&segregs);
  319.       
  320.       
  321.                ISALNUM-ISASCII
  322.                 
  323.                #include <ctype.h>
  324.                int isalnum (c);     »α«óÑα∩ÑΓ  ß¿¼ó«½δ  ¡á   »α¿-
  325.                                     ¡áñ½Ñª¡«ßΓ∞  ¬ á½Σáó¿Γ¡«-µ¿Σ-
  326.                                     α«ó«¼π Γ¿»π (A-Z,a-z,0-9)
  327.                int isalpha(c);      »α«óÑα∩ÑΓ ¡á íπ¬óδ (A-Z,a-z)
  328.                int isascii(c);      »α«óÑα∩ÑΓ  ¡á  ß¿¼ó«½δ   ¬«ñá
  329.                                     ASCII (0x00-0x7F)
  330.                int c;               »α«óÑα∩Ѽá∩ óѽ¿τ¿¡á
  331.                 
  332.                Ä»¿ßá¡¿Ñ.
  333.                 
  334.                Åα«µÑñπαδ,  «»¿ßá¡¡δÑ  ó  ctype,  »α«óÑα∩εΓ óóÑñÑ¡¡«Ñ µÑ½«Ñ
  335.          º¡áτÑ¡¿Ñ ¿ ó«ºóαáΘáεΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ µÑ½«Ñ πñ«ó½ÑΓó«α∩-
  336.          ÑΓ πß½«ó¿∩¼ »α«óÑન, ¿ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ φΓ«ú« ¡Ñ  »α«¿ßσ«-
  337.          ñ¿Γ.  ÅαÑñ»«½áúáÑΓß∩, τΓ« ¡á πßΓá¡«ó½Ñ¡¡«¼ «í«απñ«óá¡¿¿ ¿ß»«½∞ºπ-
  338.          εΓß∩ ¬«ñδ ASCII.
  339.                Åα«µÑñπαá isascii óδñáÑΓ º¡áτÑ¡¿Ñ αѺπ½∞ΓáΓá ñ½∩ óßÑσ µÑ½«-
  340.          τ¿ß½Ñ¡¡δσ º¡áτÑ¡¿⌐. Äñ¡á¬« «ßΓá½∞¡δÑ »α«µÑñπαδ óδñáεΓ  «»αÑñѽѡ-
  341.          ¡δ⌐  αѺπ½∞ΓáΓ Γ«½∞¬« ñ½∩ ΓÑσ µÑ½«τ¿ß½Ñ¡¡δσ º¡áτÑ¡¿⌐, ¬«Γ«αδÑ ¼«-
  342.          úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ó ß¿¼ó«½δ ¬«ñá ASCII (τΓ« »α«¿ßσ«ñ¿Γ Γ«½∞-
  343.          ¬« Γ«úñá, ¬«úñá »α«óÑα¬á ß »«¼«Θ∞ε isascii ñáÑΓ »«½«ª¿Γѽ∞¡δ⌐ αÑ-
  344.          ºπ½∞ΓáΓ) ¿½¿ º¡áτÑ¡¿Ñ EOF («»αÑñѽѡ¡«Ñ ó <stdio.h>)  ñ½∩  ß¿¼ó«-
  345.          ½«ó, ¡Ñ »α¿¡áñ½ÑªáΘ¿σ ¬ ASCII.
  346.                æ¼.ΓᬪѠ  iscntrl,   isdigit,  isgraf,  islower,  isprint,
  347.          ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper.
  348.              
  349.                çá¼Ñτá¡¿Ñ! Åα«µÑñπαδ ctype αÑ὿º«óá¡δ ¬á¬ ¼á¬α«.
  350.                 
  351.             
  352.                Åα¿¼Ñα:
  353.                 
  354.                #include <stdio.h>
  355.  
  356.                                       - 143 -
  357.          
  358.          
  359.                #include <ctype.h>
  360.                int ch;
  361.                /*æ½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ á¡á½¿º¿απεΓ óßÑ **ß¿¼ó«½δ ¼Ñªñ𠬫ñá-
  362.          ¼¿ 0σ0 ¿ 0σ7F, *»ÑτáΓáÑΓ "A" ñ½∩ íπ¬ó, "AN" - ñ½∩  íπ¬óÑ¡¡«**µ¿Σ-
  363.          α«óδσ ß¿¼ó«½«ó ¿ "AS" ñ½∩ ß¿¼ó«½«ó **¬«ñá ASCII : */
  364.                for (ch=0;ch<=0x7F;ch++) {
  365.                         printf ("%#04x",ch);
  366.                         printf ("%3S",isalnnum(ch)  ? "AN":" ");
  367.                         printf ("%2S",isalpha(ch)   ? "A":" ");
  368.                         printf ("%3S",isascii(ch)   ? "AS":" ");
  369.                         putchar ('\n');
  370.       
  371.                 
  372.                ISATTY
  373.             
  374.                #include <io.h>   ΓαÑíπÑΓß∩  Γ«½∞¬«   ñ½∩   «íΩ∩ó½Ñ¡¿∩
  375.                                  Σπ¡¬µ¿¿
  376.                int isatty(handle);
  377.                int handle;       handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á »α«óÑα∩Ѽ«Ñ
  378.                                  πßΓα«⌐ßΓó«
  379.             
  380.                Ä»¿ßá¡¿Ñ.
  381.             
  382.                öπ¡¬µ¿∩  isatty «»αÑñѽ∩ÑΓ, ∩ó½∩ÑΓß∩ ½¿ ñá¡δ⌐ handle-α ßó∩-
  383.          ºá¡¡δ¼ ß ß¿¼ó«½∞¡δ¼ πßΓα«⌐ßΓó«¼  (Γᬿ¼  ¬á¬  ΓÑନ¡á½,  ¬«¡ß«½∞,
  384.          »α¿¡ΓÑα ¿½¿ »«ß½Ññ«óáΓѽ∞¡δ⌐ »«αΓ).
  385.             
  386.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  387.             
  388.                öπ¡¬µ¿∩ isatty ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ πßΓα«⌐ß-
  389.          Γó« ∩ó½∩ÑΓß∩ ß¿¼ó«½∞¡δ¼. ê¡áτÑ - ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ 0.
  390.             
  391.                Åα¿¼Ñα:
  392.             
  393.                #include <io.h>
  394.                int fh;
  395.                long loc;
  396.                .
  397.                .
  398.                .
  399.                if (isatty(fh)==0)
  400.                /* Ñß½¿ ¡Ñ πßΓα«⌐ßΓó«, Γ« óδñáÑΓ ΓѬπΘπε »«º¿µ¿ε */
  401.                loc=tell(fh);
  402.       
  403.                 
  404.                ISCNTRL-ISXDIGIT
  405.                 
  406.                #include <ctype.h>
  407.                iscntrl(c);        »α«óÑα∩ÑΓ   ¡á  π»αáó½∩εΘ¿⌐
  408.                                   ß¿¼ó«½ (0σ00-0σ1f ¿½¿ 0x7F)
  409.                isdigit (c);       »α«óÑα∩ÑΓ ¡á µ¿Σαπ (0-9)
  410.                isgraph(c);        »α«óÑα∩ÑΓ ¡á  »ÑτáΓáѼδÑ ß¿¼ó«-
  411.                                   ½δ,  ¿ß¬½ετá∩  ß¿¼ó«½   »α«íѽá
  412.                                   (0σ21-0σ7e)
  413.                islower(c);        »α«óÑα∩ÑΓ  ¡á  ßΓα«τ¡δÑ íπ¬óδ
  414.  
  415.                                       - 144 -
  416.          
  417.          
  418.                                   (a-z)
  419.                isprint(c);        »α«óÑα∩ÑΓ  ¡á  »ÑτáΓáѼδÑ
  420.                                   ß¿¼ó«½δ (0x20-0x7e)
  421.                ispunct(c);        »α«óÑα∩ÑΓ ¡á  º¡á¬¿  »π¡¬Γπᵿ¿
  422.                                   (¬«úñá   »α«óÑન  ß    »«¼«Θ∞ε
  423.                                   isalnum(c),   iscntrl(c)      ¿
  424.                                   isspace(c) ¿¼ÑεΓ  «Γα¿µáΓѽ∞¡δ⌐
  425.                                   αѺπ½∞ΓáΓ
  426.                isspace(c);        »α«óÑα∩ÑΓ ¡á »α«íѽ∞¡δÑ ß¿¼ó«½δ
  427.                                   (0x09-0x0d ¿½¿ 0x20)
  428.                isupper(c);        »α«óÑα∩ÑΓ  ¡á  »α«»¿ß¡δÑ  íπ¬óδ
  429.                                   (A-Z)
  430.                isxdigit(c);       »α«óÑα∩ÑΓ  ¡á ΦÑßΓ¡áñµáΓÑα¿τ¡δÑ
  431.                                   µ¿Σαδ  (A-F,a-f, 0-9)
  432.                int c;             »α«óÑα∩Ѽ«Ñ µÑ½«Ñ
  433.                
  434.                Ä»¿ßá¡¿Ñ.
  435.                 
  436.                Åα«µÑñπαδ  ctype, «»¿ßá¡¡δÑ óδΦÑ, »α«óÑα∩εΓ óóÑñÑ¡¡«Ñ µÑ½«Ñ
  437.          º¡áτÑ¡¿Ñ ¿ ó«ºóαáΘáεΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ µÑ½«Ñ πñ«ó½ÑΓó«α∩-
  438.          ÑΓ πß½«ó¿∩¼ »α«óÑન, ¿ 0 -  ó  »α«Γ¿ó¡«¼  ß½πτáÑ.  (êß»«½∞ºπÑΓß∩
  439.          «í«απñ«óá¡¿Ñ  ß ß¿¼ó«½á¼¿ ¬«ñá ASCII). ¥Γ¿ »α«µÑñπαδ óδαáíáΓδóáεΓ
  440.          «»αÑñѽѡ¡δ⌐ αѺπ½∞ΓáΓ Γ«½∞¬« ñ½∩ µÑ½δσ º¡áτÑ¡¿⌐, ß««ΓóÑΓßΓóπεΘ¿σ
  441.          ß¿¼ó«½á¼ ¬«ñá ASCII (φΓ« ó«º¼«ª¡« Γ«½∞¬« Γ«úñá, ¬«úñá isascii ¿ß-
  442.          Γ¿¡¡á) ¿½¿ º¡áτÑ¡¿Ñ EOF («»αÑñѽѡ¡«Ñ ó <stdio.h>),  Ñß½¿  ß¿¼ó«½
  443.          ¡Ñ »α¿¡áñ½Ñª¿Γ ¬ ASCII.
  444.                æ¼.ΓᬪѠ  isalnum,  isalpha,  isascii,  toascii,  tolower,
  445.          toupper.
  446.                
  447.                çá¼Ñτá¡¿Ñ! Åα«µÑñπαδ ctype αÑ὿ºπεΓß∩ ¬á¬ ¼á¬α«.
  448.       
  449.                Åα¿¼Ñα:
  450.                 
  451.                #include <stdio.h>
  452.                #include <ctype.h>
  453.                int ch;
  454.                /*  ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ á¡á½¿º¿απεΓ óßÑ
  455.                ** ß¿¼«ó½δ ¼Ñªñ𠬫ñἿ 0σ0 ¿ 0σ7f,
  456.                ** »ÑτáΓá∩ "U" ñ½∩ »α«»¿ß¡δσ íπ¬ó,
  457.                ** "L" - ñ½∩  ßΓα«τ¡δσ, "D" ñ½∩ µ¿Σα,
  458.                ** "X" ñ½∩ ΦÑßΓ¡áñµáΓÑα¿τ¡δσ µ¿Σα,
  459.                ** "S" ñ½∩ »α«íѽ«ó, "PU" ñ½∩ º¡á¬«ó
  460.                ** »π¡¬Γπᵿ¿, "PR" ñ½∩ »ÑτáΓáѼδσ
  461.                ** ß¿¼ó«½«ó,   "G" ñ½∩ úαáΣ¿τÑ߬¿σ,
  462.                ** "C" ñ½∩ π»αáó½∩εΘ¿σ.
  463.                ** àß½¿ ¬«ñ ¼«ªÑΓ íδΓ∞ ¡á»ÑτáΓá¡, «¡ »ÑτáΓáÑΓß∩.   */
  464.                for (ch=0; ch<=0x7f; ch++)
  465.                  { printf ("%2s", iscntrl (ch)  ? "C":" ");
  466.                    printf ("%2s", isdigit (ch)  ? "D":" ");
  467.                    printf ("%2s", isgraph (ch)  ? "G":" ");
  468.                    printf ("%2s", islower (ch)  ? "L":" ");
  469.                    printf ("%c",  isprint (ch)  ? ch :'\0');
  470.                    printf ("%3s", ispunct (ch)  ? "PU":" ");
  471.                    printf ("%2s", isspace (ch)  ? "S":" ");
  472.                    printf ("%3s", isprint (ch)  ? "PR":" ");
  473.  
  474.                                       - 145 -
  475.          
  476.          
  477.                    printf ("%2s", isupper (ch)  ? "U":" ");
  478.                    printf ("%2s", isxdigit (ch)  ? "X":" ");
  479.                    putchar('\n');
  480.                  }
  481.                
  482.  
  483.                ITOA
  484.                 
  485.                #include <stdlib.h>          ÆαÑíπÑΓß∩   Γ«½∞¬«    ñ½∩
  486.                                             «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  487.                char *itoa(value,string,radix);
  488.                int value;                   »αÑ«íαáºπѼ«Ñ τ¿ß½«
  489.                char *string;                ßΓ᫬á αѺπ½∞ΓáΓá
  490.                int radix;                   «ß¡«óá¡¿Ñ value
  491.                
  492.                Ä»¿ßá¡¿Ñ.
  493.                 
  494.                öπ¡¬µ¿∩ itoa »αÑ«íαáºπÑΓ ß¿¼ó«½δ τ¿ß½á value  ó  ß¿¼ó«½∞¡πε
  495.          ßΓ᫬π,  ºá¬á¡τ¿óáεΘπεß∩  NULL-ß¿¼ó«½«¼, ¿ ºá»«¼¿¡áÑΓ αѺπ½∞ΓáΓ ó
  496.          string. Çαúπ¼Ñ¡Γ radix «»αÑñѽ∩ÑΓ «ß¡«óá¡¿Ñ ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ ñ½∩
  497.          value; Ñú« º¡áτÑ¡¿Ñ ¼«ªÑΓ ½ÑªáΓ∞ ó »αÑñѽáσ  «Γ  2  ñ«  36.  àß½¿
  498.          radix  =  10  ¿ value - «Γα¿µáΓѽ∞¡«Ñ τ¿ß½«, Γ« »Ñαóδ¼ ß¿¼ó«½«¼ ó
  499.          ßΓα«¬Ñ αѺπ½∞ΓáΓá íπñÑΓ º¡á¬ ¼¿¡πß.
  500.            
  501.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  502.                 
  503.                öπ¡¬µ¿∩ itoa ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π.  é«ºóαáΘáѼ«ú«
  504.          º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  505.                æ¼.ΓᬪѠltoa, ultoa.
  506.                 
  507.                çá¼Ñτá¡¿Ñ! ÉẼÑα »á¼∩Γ¿, «Γó«ñ¿¼«⌐ ñ½∩ string, ñ«½ªÑ¡ íδΓ∞
  508.          í«½∞ΦÑ, τѼ ΓαÑíπÑΓß∩ ñ½∩ ó«ºóαáΘáѼ«⌐ ßΓ᫬¿. öπ¡¬µ¿∩ ¼«ªÑΓ ó«º-
  509.          óαáΘáΓ∞ ßΓ᫬π ñ½¿¡«⌐ ñ« 17 íá⌐Γ«ó.
  510.                 
  511.                Åα¿¼Ñα:
  512.                 
  513.                #include <stdlib.h>
  514.                int radix=8;
  515.                char buffer[20];
  516.                char *p;
  517.                p=itoa(-3445,buffer,radix); /*p="1712113"*/
  518.       
  519.             
  520.                KBHIT
  521.             
  522.                #include <conio.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  523.                                       Σπ¡¬µ¿¿
  524.                int kbhit();
  525.                
  526.                Ä»¿ßá¡¿Ñ.
  527.             
  528.                öπ¡¬µ¿∩ kbhit »α«óÑα∩ÑΓ ¡áªáΓ¿Ñ ¬½áó¿Φ¿ ¡á ¬«¡ß«½¿.
  529.             
  530.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  531.             
  532.  
  533.                                       - 146 -
  534.          
  535.          
  536.                öπ¡¬µ¿∩  kbhit  ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ ¬½áó¿Φá
  537.          ¡áªáΓá. é »α«Γ¿ó¡«¼ ß½πτáÑ ó«ºóαáΘáÑΓß∩ 0.
  538.             
  539.                Åα¿¼Ñα:
  540.            
  541.                #include <conio.h>
  542.                int result;
  543.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α »α«óÑα∩ÑΓ, íδ½á ½¿ ¡áªáΓá ¬½áó¿Φá */
  544.             result = kbhit();
  545.                /* Ñß½¿ αѺπ½∞ΓáΓ result ¡Ñ¡π½Ñó«⌐, íπΣÑα  «ª¿ñáÑΓ  ¡áªáΓ¿Ñ
  546.          ¬½áó¿Φ¿.  àÑ ¼«ª¡« ºáñáΓ∞ »α¿ »«¼«Θ¿ getch ¿½¿ getche. àß½¿ getch
  547.          ¿½¿ getche í뫨 óδºóá¡δ Σπ¡¬µ¿Ñ⌐ kbhit  íѺ  »α«óÑન,  »α«úαá¼¼á
  548.          ñѽáÑΓ »áπºπ ¿ «ª¿ñáÑΓ óó«ñ ß¿¼ó«½á. */
  549.       
  550.             
  551.                LABS
  552.             
  553.                #include <stdlib.h>             ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩
  554.                                                «»¿ßá¡¿∩ Σπ¡¬µ¿¿
  555.                long labs(n);
  556.                long n;                         ñ½¿¡¡«Ñ µÑ½«Ñ º¡áτÑ¡¿Ñ
  557.                
  558.                Ä»¿ßá¡¿Ñ.
  559.             
  560.                öπ¡¬µ¿∩  labs óδαáíáΓδóáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« ñ½¿¡-
  561.          ¡«ú« µÑ½«ú« áαúπ¼Ñ¡Γá n.
  562.             
  563.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  564.             
  565.                öπ¡¬µ¿∩ labs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« áαúπ¼Ñ¡-
  566.          Γá. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  567.                æ¼. ΓᬪѠabs, cabs, fabs.
  568.             
  569.             Åα¿¼Ñα:
  570.             
  571.             #include <stdlib.h>
  572.             long x, y;
  573.             x = -41567L;
  574.             y = labs(x);            /* y = 41567L */
  575.       
  576.             
  577.                LDEXP
  578.             
  579.                #include <math.h>
  580.                double ldext(x,exp);
  581.                double x;            º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
  582.                int *exp;            µÑ½á∩ φ¬ß»«¡Ñ¡Γá
  583.                                  
  584.             
  585.                Ä»¿ßá¡¿Ñ.
  586.             
  587.                öπ¡¬µ¿∩  ldexp ó«ºóαáΘáÑΓ x, π¼¡«ªÑ¡¡«Ñ ¡á 2 ó ßΓѻѡ¿ exp.
  588.          é ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩ αѺπ½∞ΓáΓá  Σπ¡¬µ¿∩  ó«ºóαáΘáÑΓ  +HUGE  ¿½¿
  589.          -HUGE (ó ºáó¿ß¿¼«ßΓ¿ «Γ º¡á¬á x) ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE.
  590.                æ¼.ΓᬪѠfrexp, modf.
  591.  
  592.                                       - 147 -
  593.          
  594.          
  595.             
  596.                Åα¿¼Ñα:
  597.             
  598.                #include <math.h>
  599.                double x,y;
  600.                int p;
  601.                x = 1.5;
  602.                p = 5;
  603.                y = ldexp(x,p);    /* y = 48.0 */
  604.       
  605.             
  606.                LFIND - LSEARCH
  607.             
  608.                #include <search.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  609.                                       Σπ¡¬µ¿¿
  610.                char *lsearch(key,base,num,width,compare);
  611.                char *lfind(key,base,num,width,compare);
  612.                char *key;              ¬½ετ »«¿ß¬á
  613.                char *base;             π¬áºáΓѽ∞  ¡á  »«¿ß¬«óπε  íáºπ
  614.                                        ñá¡¡δσ
  615.                unsigned *num,width;    τ¿ß½« ¿ αẼÑα φ½Ñ¼Ñ¡Γ«ó
  616.                int (*compare)();       π¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε ßαáó¡Ñ¡¿∩
  617.             
  618.                Ä»¿ßá¡¿Ñ.
  619.  
  620.                öπ¡¬µ¿¿ lsearch ¿ lfind »α«¿ºó«ñ∩Γ ßΓ᫬«óδ⌐ »«¿ß¬ ñ½∩ º¡á-
  621.          τÑ¡¿∩ key ó ¼áßß¿óÑ ¿º num φ½Ñ¼Ñ¡Γ«ó, ¬áªñδ⌐ αẼÑα«¼ width íá⌐Γ.
  622.          (é «Γ½¿τ¿¿ «Γ bsearch, lsearch ¿ lfind ¡Ñ ΓαÑíπεΓ «Γß«αΓ¿α«óá¡¡«-
  623.          ú« ¼áßß¿óá). Çαúπ¼Ñ¡Γ base ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á  íáºπ  ¼áßß¿óá,
  624.          ¬«Γ«αδ⌐ ¡πª¡« ¡á⌐Γ¿.
  625.                àß½¿ key ¡Ñ ¡á⌐ñÑ¡, lsearch »α¿ß«Ññ¿¡∩ÑΓ Ñú« ó ¬«¡Ñµ. öπ¡¬-
  626.          µ¿∩ lfind φΓ«ú« ¡Ñ ñѽáÑΓ.
  627.                Çαúπ¼Ñ¡Γ  compare ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á »α«µÑñπαπ, »«ßΓáó-
  628.          ½∩Ѽπε »«½∞º«óáΓѽѼ, ¬«Γ«αá∩ ßαáó¡¿óáÑΓ ñóá φ½Ñ¼Ñ¡Γá  ¼áßß¿óá  ¿
  629.          ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, «»αÑñѽ∩εΘÑÑ ¿σ «Γ¡«ΦÑ¡¿Ñ. ÄíÑ Σπ¡¬µ¿¿ óδºδ-
  630.          óáεΓ  »α«µÑñπαπ  compare ó ΓÑτÑ¡¿¿ »«¿ß¬á «ñ¿¡ ¿½¿ ¡Ñ߬«½∞¬« αáº,
  631.          »ÑαÑßδ½á∩ ó ¬áªñ«¼ ó맮óÑ π¬áºáΓѽ¿ ¡á ñóá φ½Ñ¼Ñ¡Γá ¼áßß¿óá.  ¥Γá
  632.          »α«µÑñπαá  ñ«½ª¡á ßαáó¡¿óáΓ∞ φ½Ñ¼Ñ¡Γδ, á ºáΓѼ ó«ºóαáΘáΓ∞ «ñ¡« ¿º
  633.          ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  634.             
  635.             ç¡áτÑ¡¿Ñ                     àú« ß¼δß½
  636.             
  637.             ¡Ñ αáó¡« 0           element 1 ¿ element 2 αẽ¿τ¡δ
  638.             
  639.                0                 element 1 αáóÑ¡ element 2
  640.             
  641.             
  642.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  643.             
  644.                ÄíÑ Σπ¡¬µ¿¿ lsearch ¿ lfind ó«ºóαáΘáεΓ π¬áºáΓѽ∞ ¡á  »Ñαó«Ñ
  645.          ó«º¡¿¬¡«óÑ¡¿Ñ key ó ¼áßß¿óÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ base.
  646.                àß½¿ key ¡Ñ ¡á⌐ñÑ¡, φΓ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ NULL.
  647.                æ¼.ΓᬪѠbsearch.
  648.             
  649.  
  650.                                       - 148 -
  651.          
  652.          
  653.             
  654.                Åα¿¼Ñα:
  655.                 
  656.                /* Σπ¡¬µ¿∩ lsearch »α«¿ºó«ñ¿Γ ßΓ᫬«óδ⌐ »«¿ß¬ ó ¼áßß¿óÑ ñ½∩
  657.          φ½Ñ¼Ñ¡Γá "key"; lsearch ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ, Ñß½¿ ó
  658.          ¡Ñ⌐ ß«ñÑনΓß∩ key, ¿ NULL - Ñß½¿ Ñú« ¡ÑΓ. */
  659.             
  660.                #include <search.h>
  661.                #include <string.h>
  662.                #include <stdio.h>
  663.                int compare();
  664.                /* ñ«½ª¡á íδΓ∞ «íΩ∩ó½Ñ¡á ¬á¬ Σπ¡¬µ¿∩ */
  665.                main (argc, argv)
  666.                int argc;
  667.                char **argv;
  668.                 {
  669.                char **result;
  670.                char *key = "PATH";
  671.                /*  ß½ÑñπεΘ¿⌐  «»ÑαáΓ«α  ¡áσ«ñ¿Γ  áαúπ¼Ñ¡Γ,  ¡áτ¿¡áεΘ¿⌐ß∩ ß
  672.          "PATH", ó »αÑñ»«½«ªÑ¡¿¿, τΓ« áαúπ¼Ñ¡Γδ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ «Γß«αΓ¿-
  673.          α«óá¡δ */
  674.                result = (char **)bsearch((char *)&key,
  675.                         (char *)argv, argc, sizeof(char *),
  676.                          compare);
  677.                if (result)
  678.                    printf ("%s found\n", *result);
  679.                else
  680.                    printf("PATH not found!\n");
  681.                  }
  682.                int compare (arg1, arg2)
  683.                char **arg1, **arg2;
  684.                 {
  685.                  return(strncmp(*arg1, *arg2, strlen(*arg1)));
  686.                 }.
  687.             
  688.             
  689.                LOCALTIME
  690.             
  691.                #include <time.h>
  692.                struct tm *localtime(time);
  693.                long *time;                 π¬áºáΓѽ∞ ¡á σαá¡¿¼«Ñ
  694.                                            óαѼ∩
  695.                
  696.                Ä»¿ßá¡¿Ñ.
  697.             
  698.                öπ¡¬µ¿∩  localtime  »αÑ«íαẫóδóáÑΓ  óαѼ∩,  σαá¡¿¼«Ñ   ¬á¬
  699.          long-º¡áτÑ¡¿Ñ,  ¬  ßΓαπ¬ΓπαÑ. Long-º¡áτÑ¡¿Ñ time »αÑñßΓáó½∩ÑΓ ßÑ-
  700.          ¬π¡ñδ, »α«ΦÑñΦ¿Ñ «Γ 00:00:00 º¡áτÑ¡¿∩ óαѼѡ¿ »« âα¿¡ó¿τπ, Γ.Ñ. ß
  701.          1 ∩¡óáα∩ 1980 ú«ñá. ¥Γ« º¡áτÑ¡¿Ñ «íδτ¡« »«½πτáÑΓß∩ ¿º ó맮óá Σπ¡-
  702.          ¬µ¿¿ time.
  703.                öπ¡¬µ¿∩ localtime αáºαδóáÑΓ º¡áτÑ¡¿Ñ time, ¬«ααÑ¬Γ¿απÑΓ º«-
  704.          ¡π ¼ÑßΓ¡«ú« óαѼѡ¿ ¿ »ÑαÑσ«ñ ¡á  ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ  óαѼ∩,  Ñß½¿  «¡
  705.          ¡áº¡áτÑ¡,  ¿ ºá»«¼¿¡áÑΓ «Γ¬«ααÑ¬Γ¿α«óá¡¡«Ñ óαѼ∩ ó ßΓαπ¬ΓπαÑ Γ¿»á
  706.          tm.(漫Γα¿ΓÑ gmtime ñ½∩ «»¿ßá¡¿∩ »«½Ñ⌐ ßΓα¬Γπαδ tm.)
  707.                é MS DOS ñáΓδ αá¡∞ΦÑ 1980 ú«ñá  ¡Ñ  »«¡¿¼áεΓß∩.  àß½¿  time
  708.          »αÑñßΓáó½∩ÑΓ  ñáΓπ »ÑαÑñ 1 ∩¡óáα∩ 1980 ú«ñá ,localtime ó«ºóαáΘáÑΓ
  709.  
  710.                                       - 149 -
  711.          
  712.          
  713.          ß¿¼ó«½∞¡πε ßΓ᫬π, »αÑñßΓáó½Ñ¡¡πε 00:00:00 January 1,1980.
  714.                öπ¡¬µ¿∩ localtime ñѽáÑΓ ¿º¼Ñ¡Ñ¡¿∩ ñ½∩ º«¡δ ¼ÑßΓ¡«ú« óαѼÑ-
  715.          ¡¿, Ñß½¿ »«½∞º«óáΓѽ∞ ó»ÑαóδÑ πßΓá¡«ó¿½ »ÑαѼѡ¡πε «¬απªÑ¡¿∩  TZ.
  716.          ç¡áτÑ¡¿Ñ¼  TZ ñ«½ª¡á íδΓ∞ ¡áºóá¡¡á∩ ΓαÑσíπ¬óÑ¡¡á∩ óαѼѡ¡á∩ º«¡á,
  717.          ¡á»α¿¼Ñα PST, ß½ÑñπεΘá∩ ºá ó«º¼«ª¡δ¼  º¡á¬«óδ¼  τ¿ß½«¼,  ºáñáεΘ¿¼
  718.          αẽ¿τ¿Ñ  ¼Ñªñπ  º¡áτÑ¡¿Ñ¼  óαѼѡ¿  »« âα¿¡ó¿τπ ¿ º«¡«⌐ ¼ÑßΓ¡«ú«
  719.          óαѼѡ¿. ù¿ß½« ñ«½ª¡« ß½Ññ«óáΓ∞ ºá ΓαÑσíπ¬óÑ¡¡«⌐  º«¡«⌐  »ÑαÑσ«ñá
  720.          ¡á  ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩ (¡á»α¿¼Ñα PDT). öπ¡¬µ¿∩ localtime ¿ß»«½∞-
  721.          ºπÑΓ αẽ¿τ¿∩ ¼Ñªñπ º¡áτÑ¡¿Ñ¼ óαѼѡ¿ »« âα¿¡ó¿τπ ¿ ¼ÑßΓ¡δ¼  óαÑ-
  722.          ¼Ñ¡Ñ¼  ñ½∩  πßΓᡫ󬿠º¡áτÑ¡¿∩ ºá»«¼¡Ñ¡¡«ú« óαѼѡ¿. àß½¿ ó πßΓá-
  723.          ¡«ó¬Ñ TZ  »α¿ßπΓßΓóπÑΓ  º«¡á  »ÑαÑσ«ñá  ¡á  ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ  óαѼ∩,
  724.          localtime  ΓᬪѠ ¿º¼Ñ¡∩ÑΓ »ÑαÑσ«ñ ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩. àß½¿ ó
  725.          TZ ¡ÑΓ ΓѬπΘÑú« º¡áτÑ¡¿∩, ¿ß»«½∞ºπÑΓß∩ º¡áτÑ¡¿Ñ PST8PDT, πßΓá¡áó-
  726.          ½¿óáѼ«Ñ »« π¼«½τá¡¿ε.
  727.                è«úñá TZ  πßΓá¡«ó½Ñ¡á,  áóΓ«¼áΓ¿τÑ߬¿  πßΓá¡áó½¿óáεΓß∩  Γα¿
  728.          ñαπú¿Ñ »ÑαѼѡ¡δÑ «¬απªÑ¡¿∩ - timezone, daylight, tzname. æ¼«Γα¿-
  729.          ΓÑ Σπ¡¬µ¿ε tzset ñ½∩ «»¿ßá¡¿∩ φΓ¿σ »ÑαѼѡ¡δσ.
  730.             
  731.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  732.             
  733.                öπ¡¬µ¿∩  localtime  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á  αѺπ½∞ΓáΓ  ó
  734.          ßΓαπ¬ΓπαÑ. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  735.                æ¼.ΓᬪѠasctime, ctime, ftime, gmtime, time, tzset.
  736.       
  737.                Åα¿¼Ñα:
  738.             
  739.                #include <stddio.h>
  740.                #include <time.h>
  741.                main()
  742.                {
  743.                  struct tm *newtime;
  744.                  char *am_pm="PM";
  745.                  time_t long_time;
  746.                  time(&long_time);
  747.                  newtime=localtime(&long_time);
  748.                  if(newtime->tm_hour<12)
  749.                     am_pm="AM";
  750.                  if(newtime->tm_hour>12)
  751.                     newtime->tm_hour-=12;
  752.                  printf("%.19s %s\n", asctime(newtime), am_pm);
  753.                }
  754.             
  755.                ìá óδσ«ñÑ:
  756.                Tue Dec 10 11:30:12 AM
  757.       
  758.             
  759.                LOCKING
  760.             
  761.                #include <sys\locking.h>
  762.                #include <io.h>        ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  763.                                       Σπ¡¬µ¿¿
  764.                int locking(handle,mode,nbyte);
  765.                int handle;            Σá⌐½«óδ⌐ handle
  766.                int mode;              αѪ¿¼ í½«¬¿α«ó¬¿ Σá⌐½á
  767.                int nbyte;             τ¿ß½« í½«¬¿α«óá¡¡δσ íá⌐Γ«ó
  768.  
  769.                                       - 150 -
  770.          
  771.          
  772.             
  773.                 
  774.                Ä»¿ßá¡¿Ñ.
  775.             
  776.                öπ¡¬µ¿∩ locking í½«¬¿απÑΓ  ¿½¿  αáºí½«¬¿απÑΓ  íá⌐Γδ  nbytes
  777.          Σá⌐½á, «»αÑñѽѡ¡«ú« »« handle. ü½«¬¿α«ó¬á íá⌐Γ«ó ó Σá⌐½Ñ ¡Ñ αáº-
  778.          αÑΦáÑΓ »«ß½ÑñπεΘÑú« τΓÑ¡¿∩ ¿ ºá»¿ß¿ φΓ¿σ íá⌐Γ«ó ñαπú¿¼¿ »α«µÑßßá-
  779.          ¼¿. Éáºí½«¬¿α«ó¬á Σá⌐½á αáºαÑΦáÑΓ ñαπú¿¼ »α«µÑßßá¼ τ¿ΓáΓ∞ ¿½¿ ºá-
  780.          »¿ßδóáΓ∞ ó íá⌐Γδ, ºáí½«¬¿α«óá¡¡δÑ αá¡ÑÑ. ü½«¬¿α«óá¡¿Ñ ¿½¿ αáºí½«-
  781.          ¬¿α«óá¡¿Ñ  ¡áτ¿¡áÑΓß∩ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ π¬áºáΓѽ∩ ¡á Σá⌐½ ¿ αáß»-
  782.          α«ßΓαá¡∩ÑΓß∩ ñ« ß½ÑñπεΘ¿σ nbyte íá⌐Γ«ó ¿½¿ ñ« ¬«¡µá Σá⌐½á.
  783.                Çαúπ¼Ñ¡Γ mode «»αÑñѽ∩ÑΓ óδ»«½¡∩ѼδÑ  ñÑ⌐ßΓó¿∩  í½«¬¿α«ó¬¿.
  784.          Ä¡ ¼«ªÑΓ íδΓ∞ «ñ¡«⌐ ¿º ß½ÑñπεΘ¿σ manifest-¬«¡ßΓá¡Γ.
  785.             
  786.                            
  787.          îanifest-¬«¡ßΓá¡Γá                ç¡áτÑ¡¿Ñ
  788.                            
  789.          LK_LOCK           ü½«¬¿α«ó¬á ºáñá¡¡δσ íá⌐Γ«ó. àß½¿  íá⌐Γδ
  790.                            ¡Ñ      ºáí½«¬¿α«ó὿ß∞,     »α«¿ßσ«ñ¿Γ
  791.                            »«óΓ«α¡á∩ »«»δΓ¬á  í½«¬¿α«ó¬¿  τÑαѺ  1
  792.                            ßѬπ¡ñπ. àß½¿ »«ß½Ñ 10 »«»δΓ«¬ íá⌐Γδ ¡Ñ
  793.                            ºáí½«¬¿α«ó὿ß∞, ó«ºóαáΘáÑΓß∩ «Φ¿í¬á.
  794.                            
  795.          LK_RLCK           Ç¡á½«ú¿τ¡« LK_LOCK.
  796.                            
  797.          LK_NBLCK          ü½«¬¿α«ó¬á ºáñá¡¡δσ íá⌐Γ«ó.  àß½¿ íá⌐Γδ
  798.                            ¡Ñ ºáí½«¬¿α«óá¡δ, ó«ºóαáΘáÑΓß∩ «Φ¿í¬á.
  799.                            
  800.          LK_NRLCK          Ç¡á½«ú¿τ¡« LK_NBLCK.
  801.                            
  802.          LK_UNLCK          Éáºí½«¬¿α«ó¬á  ºáñá¡¡δσ  íá⌐Γ«ó.  üá⌐Γδ
  803.                            ñ«½ª¡δ íδΓ∞ αá¡ÑÑ ºáí½«¬¿α«óá¡δ.
  804.  
  805.                 
  806.                ä½∩  Σá⌐½á ¼«ªÑΓ íδΓ∞ ºáí½«¬¿α«óá¡á í«½ÑÑ τѼ «ñ¡á «í½áßΓ∞,
  807.          ¡« αáí«Γá ß »ÑαѬΓδΓ묨 «í½áßΓ∩¼¿ ¡Ñ ñ«»π߬áÑΓß∩. èα«¼Ñ  Γ«ú«,  ó
  808.          «ñ¡«  ¿  Γ« ªÑ óαѼ∩ ¡Ñ ¼«ªÑΓ íδΓ∞ αáºí½«¬¿α«óá¡á í«½ÑÑ  τѼ «ñ¡á
  809.          «í½áßΓ∞.
  810.                è«úñá  Σá⌐½  αáºí½«¬¿απÑΓß∩,  «í½áßΓ∞ αáºí½«¬¿απѼ«ú« Σá⌐½á
  811.          ñ«½ª¡á ß««ΓóÑΓßΓó«óáΓ∞  αá¡ÑÑ  ºáí½«¬¿α«óá¡¡«⌐  «í½áßΓ¿.  öπ¡¬µ¿∩
  812.          locking ¡Ñ ¼«ªÑΓ αáºí½«¬¿α«óáΓ∞ «ñ¡«óαѼѡ¡« ß¼Ñª¡δÑ «í½áßΓ¿, Γá¬
  813.          ¬á¬   Ñß½¿  ñóÑ  «í½áßΓ¿ ∩ó½∩εΓß∩ ß¼Ñª¡δ¼¿, ¬áªñá∩ «í½áßΓ∞ ñ«½ª¡á
  814.          íδΓ∞ αáºí½«¬¿α«óá¡á «Γñѽ∞¡«.
  815.                éßÑ í½«¬¿α«ó¬¿ ñ«½ª¡δ íδΓ∞ πñá½Ñ¡δ  »ÑαÑñ  ºá¬αδΓ¿Ñ¼  Σá⌐½á
  816.          ¿½¿ »ÑαÑñ óδσ«ñ«¼ ¿º »α«úαá¼¼δ.
  817.             
  818.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  819.             
  820.                öπ¡¬µ¿∩ locking ó«ºóαáΘáÑΓ 0, Ñß½¿ «¡á πß»ÑΦ¡« óδ»«½¡¿½áß∞.
  821.          é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ « ¡ÑπñáτÑ  ¿ errno πßΓá-
  822.          ¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  823.            
  824.          ç¡áτÑ¡¿Ñ                          àú« ß¼δß½
  825.             
  826.          EACCES            »α¿¡πñ¿Γѽ∞¡á∩ í½«¬¿α«ó¬á (Σá⌐½  óßÑúñá
  827.  
  828.                                       - 151 -
  829.          
  830.          
  831.                            í½«¬¿α«óá¡ ¿½¿ αáºí½«¬¿α«óá¡).
  832.                            
  833.          EBADF             ¡ÑóÑα¡δ⌐ Σá⌐½«óδ⌐ handle.
  834.                            
  835.          EDEADLOCK         »α¿¡πñ¿Γѽ∞¡á∩ í½«¬¿α«ó¬á. ¥Γ« º¡áτÑ¡¿Ñ
  836.                            ó«ºóαáΘáÑΓß∩,  Ñß½¿ ºáñá¡ Σ½½áú LK_LOCK
  837.                            ¿½¿  LK_RLCK, ¿ Σá⌐½  ¡Ñ   ¼«ªÑΓ   íδΓ∞
  838.                            ºáí½«¬¿α«óá¡ »«ß½Ñ  10 »«»δΓ«¬.
  839.                            
  840.                æ¼.ΓᬪѠopen, creat.
  841.             
  842.                çá¼Ñτá¡¿Ñ!  öπ¡¬µ¿∩  locking ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á Γ«½∞¬«
  843.          ñ½∩ óÑαß¿⌐ MS DOS 3.0 ¿ »«ß½ÑñπεΘ¿σ, ó αá¡¡¿σ óÑαß¿∩σ MS DOS  «¡á
  844.          ¡Ñ ñáÑΓ ¡¿¬á¬«ú« αѺπ½∞ΓáΓá.
  845.             
  846.                Åα¿¼Ñα:
  847.             
  848.                #include <io.h>
  849.                #include <sys\locking.h>
  850.                #include <stdlib.h>
  851.                extern unsigned char _osmajor;
  852.                int fh;
  853.                long pos;
  854.                .
  855.                .
  856.                .
  857.                /*  ß«σαá¡¿Γ∞ ΓѬπΘπε »«º¿µ¿ε π¬áºáΓѽ∩ ¡á Σá⌐½, ºáΓѼ í½«-
  858.          ¬¿α«óáΓ∞ «í½áßΓ∞ «Γ ¡áτá½á Σá⌐½á ñ« ß«σαá¡Ñ¡¡«⌐ »«º¿µ¿¿ π¬áºáΓѽ∩
  859.          ¡á Σá⌐½ */
  860.                if (_osmajor >= 3)  {
  861.                   pos=tell(fh);
  862.                   lseek(fh, OL, O);
  863.                   if ((locking(fh, LK_NBLCK,pos)) != -1)  {
  864.                   .
  865.                   .
  866.                   .
  867.                   lseek(fh, OL, O);
  868.                   locking((fh, LK_UNLCK, pos);
  869.                                                            }
  870.                                     }
  871.       
  872.             
  873.                LOG-LOG10
  874.             
  875.                #include <math.h>
  876.                double log(x);    óδτ¿ß½∩ÑΓ ¡áΓπαá½∞¡δ⌐ ½«úáα¿Σ¼ x.
  877.                double log10(x);  óδτ¿ß½∩ÑΓ ñÑß∩Γ¿τ¡δ⌐  ½«úáα¿Σ¼ x.
  878.                double x;         º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
  879.             
  880.                Ä»¿ßá¡¿Ñ.
  881.             
  882.                öπ¡¬µ¿¿ log ¿ log10 óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« ¡áΓπαá½∞¡δ⌐  ¿
  883.          ñÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼ x.
  884.             
  885.  
  886.                                       - 152 -
  887.          
  888.          
  889.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  890.             
  891.                öπ¡¬µ¿¿  log ¿ log10 ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ ½«úáα¿Σ¼á. àß½¿ x
  892.          «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ, «íÑ Σπ¡¬µ¿¿ »ÑτáΓáεΓ ß««íΘÑ¡¿Ñ «í  «Φ¿í¬Ñ
  893.          DOMAIN  ó stderr ¿ ó«ºóαáΘáεΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE. àß½¿ x
  894.          αáó¡« 0, «íÑ Σπ¡¬µ¿¿ »ÑτáΓáεΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ SING ¿  ó«ºóαá-
  895.          ΘáεΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE. ê ó Γ«¼ ¿ ó ñαπú«¼ ß½πτáÑ errno
  896.          πßΓá¡áó½¿óáÑΓß∩ ó EDOM.
  897.                Äíαáí«Γ¬á  «Φ¿í«¬  ¼«ªÑΓ  íδΓ∞ ¼«ñ¿Σ¿µ¿α«óá¡á »α¿ ¿º¼Ñ¡Ñ¡¿¿
  898.          »α«µÑñπαδ matherr.
  899.                æ¼.ΓᬪѠexp, matherr, pow.
  900.             
  901.                Åα¿¼Ñα:
  902.             
  903.                #include <math.h>
  904.                double xx = 1000.0, y;
  905.                y = log(x);   /* y = 6.907755 */
  906.                /* Σπ¡¬µ¿∩ log10 óδτ¿ß½∩ÑΓ ñÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼ ñ½∩ ºáñá¡¡«-
  907.          ú« º¡áτÑ¡¿∩ */
  908.                y = log10(x); /* y = 3.0 */
  909.                
  910.                
  911.             
  912.                LONGJMP.
  913.             
  914.                #include <setjmp.h>
  915.                void longjmp(env, value);
  916.                jmp_buf env;                  »ÑαѼѡ¡á∩,   ó  ¬«Γ«α«⌐
  917.                                              σαá¡¿Γß∩ «¬απªÑ¡¿Ñ
  918.                int value;                    º¡áτÑ¡¿Ñ,   ó«ºóαáΘáѼ«Ñ
  919.                                              »α¿ ó맮óÑ setjmp.
  920.                
  921.                Ä»¿ßá¡¿Ñ.
  922.             
  923.                öπ¡¬µ¿∩ longjmp ó«ßßΓá¡áó½¿óáÑΓ ß«ßΓ«∩¡¿Ñ ßΓѬá, αá¡ÑÑ ß«σ-
  924.          αá¡Ñ¡¡«Ñ ó env Σπ¡¬µ¿Ñ⌐ setjmp.
  925.                öπ¡¬µ¿¿ setjmp ¿ longjmp «íÑß»Ñτ¿óáεΓ ó«º¼«ª¡«ßΓ∞  óδ»«½¡Ñ-
  926.          ¡¿∩  ¡Ñ½«¬á½∞¡«ú«  (nonlocal)  »ÑαÑσ«ñá ¿ «íδτ¡« ¿ß»«½∞ºπεΓß∩ ñ½∩
  927.          »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ ¡á óδ»«½¡Ñ¡¿Ñ «íαáí«Γ¬¿ «Φ¿í«¬;  ó«ßßΓá¡áó½¿-
  928.          óáεΓ  ¬«ñ ó αá¡ÑÑ óδºóá¡¡«⌐ »α«µÑñπαÑ (íѺ ¿ß»«½∞º«óá¡¿∩ «íδτ¡«ú«
  929.          ó맮óá); ó«ºóαáΘáεΓ πß½«ó¡δÑ «í«º¡áτÑ¡¿∩.
  930.                éδº«ó«¼ setjmp ß«σαá¡∩ÑΓß∩ ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ ßΓѬᠠó  env.
  931.          Å«ß½ÑñπεΘ¿⌐ ó맮ó longjmp ó«ßßΓá¡áó½¿óáÑΓ ß«σαá¡Ñ¡¡«Ñ ß«ßΓ«∩¡¿Ñ ¿
  932.          ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ ¡á π¬áºáΓѽ∞ (Γ«τ¬π óσ«ñá), ¡Ñ»«ßαÑñßΓóÑ¡¡«
  933.          ß½ÑñπεΘ¿⌐ ºá ß««ΓóÑΓßΓóπεΘ¿¼ óδº«ó«¼ setjmp.
  934.                éδ»«½¡Ñ¡¿Ñ  ó«º«í¡«ó½∩ÑΓß∩,  ¬«úñá  ó맮ó setjmp ó«ºóαáΘáÑΓ
  935.          ºáñá¡¡«Ñ value. è«úñá óδºδóáÑΓß∩ longjmp, º¡áτÑ¡¿∩ óßÑσ  »ÑαѼѡ-
  936.          ¡δσ  (ºá  ¿ß¬½ετÑ¡¿Ñ¼  »ÑαѼѡ¡δσ αÑú¿ßΓαá) ßΓá¡«ó∩Γß∩ ñ«ßΓπ»¡δ¼¿
  937.          ñ½∩ »α«µÑñπαδ, ¬«Γ«αá∩ »α¿¡¿¼áÑΓ π»αáó½Ñ¡¿Ñ ¿  ß«ñÑαª¿Γ  º¡áτÑ¡¿∩
  938.          φΓ¿σ »ÑαѼѡ¡δσ. ç¡áτÑ¡¿∩ »ÑαѼѡ¡δσ αÑú¿ßΓαá ¡Ñ»αÑñ߬áºπѼδ.
  939.                öπ¡¬µ¿∩ longjmp ñ«½ª¡á óδºδóáΓ∞ß∩ αá¡ÑÑ Σπ¡¬µ¿¿, «»αÑñѽ∩ε-
  940.          ΘÑ⌐ ó«ºóαáΓ setjmp. àß½¿ longjmp óδºóá¡á »«ß½Ñ Σπ¡¬µ¿¿, «»αÑñѽ∩-
  941.          εΘÑ⌐ ó«ºóαáΓ setjmp, Γ« ¼«ªÑΓ »α«¿º«⌐Γ¿ ¡Ñ»αÑñ߬áºπѼ«Ñ »«óÑñÑ¡¿Ñ
  942.          »α«úαá¼¼δ.
  943.                ç¡áτÑ¡¿Ñ  value,  ó«ºóαáΘáѼ«Ñ longjmp, ñ«½ª¡« íδΓ∞ ¡Ñ¡π½Ñ-
  944.          óδ¼. àß½¿ ñ½∩ value ºáñá¡ áαúπ¼Ñ¡Γ 0, º¡áτÑ¡¿Ñ ó«ºóαáΓá ºá¼Ñ¡∩ÑΓ-
  945.  
  946.                                       - 153 -
  947.          
  948.          
  949.          ß∩ º¡áτÑ¡¿Ñ¼ 1.
  950.             
  951.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  952.             
  953.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  954.                æ¼. ΓᬪѠsetjmp.
  955.             
  956.                ÅαÑñπ»αѪñÑ¡¿Ñ! ç¡áτÑ¡¿∩ »ÑαѼѡ¡δσ αÑú¿ßΓαá  ó  »α«µÑñπαÑ,
  957.          óδºδóáεΘÑ⌐ setjmp, »«ß½Ñ óδ»«½¡Ñ¡¿∩ longjmp ¡Ñ ¼«úπΓ íδΓ∞ ó«ßßΓá-
  958.          ¡«ó½Ñ¡δ ¬ ß«íßΓóÑ¡¡δ¼ º¡áτÑ¡¿∩¼.
  959.                
  960.       
  961.             Åα¿¼Ñα:
  962.          
  963.             #include <stdio.h>
  964.             #include <setjmp.h>
  965.             jmp_buf mark;
  966.             main()
  967.                  {
  968.                  if (setjmp(mark) != 0)
  969.                  {   printf("longjmp has been called\n");
  970.                      recover();
  971.                      exit(1);
  972.                   }
  973.                  printf("setjmp has been called\n");
  974.                  .
  975.                  .
  976.                  .
  977.                  p();
  978.                  .
  979.                  .
  980.                  .
  981.                  }
  982.             
  983.             p()
  984.                 {
  985.                 int error = 0;
  986.                 .
  987.                 .
  988.                 .
  989.                 if (error != 0)
  990.                    longjmp(mark, -1);
  991.                 .
  992.                 .
  993.                 .
  994.                 }
  995.             
  996.             recover()
  997.                 {
  998.             
  999.                /*  »α¿  óδσ«ñÑ ¿º »α«úαá¼¼δ πíÑñ¿ΓÑß∞, τΓ« Σá⌐½δ ñá¡¡δσ ¡Ñ
  1000.          íπñπΓ ºá»«ατÑ¡δ */
  1001.                .
  1002.                .
  1003.                .
  1004.                }.
  1005.                
  1006.  
  1007.                                       - 154 -
  1008.          
  1009.          
  1010.                     
  1011.                
  1012.                LSEEK
  1013.                
  1014.                
  1015.                #include <stdio.h>   ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1016.                                     Σπ¡¬µ¿⌐.
  1017.                long lseek (stream, offset, origin);
  1018.                int handle;           handle, ßßδ½áεΘ¿⌐ß∩ ¡á  «Γ¬αδΓδ⌐
  1019.                                      Σá⌐½
  1020.                long offset;          τ¿ß½« íá⌐Γ«ó ¿º origin.
  1021.                int «rigin;           ¡áτá½∞¡á∩ »«º¿µ¿∩.
  1022.                                                                                                                       
  1023.                Ä»¿ßá¡¿Ñ.
  1024.                                                                 
  1025.                öπ¡¬µ¿∩ lseek »ÑαÑñó¿úáÑΓ π¬áºáΓѽ∞ ¡á Σá⌐½ (Ñß½¿ «¡ ÑßΓ∞),
  1026.          ßó∩ºá¡¡δ⌐ ß handle, ¡á ¡«ó«Ñ ¼ÑßΓ« αáß»«½«ªÑ¡¿∩, ¬«Γ«α«Ñ ∩ó½∩ÑΓß∩
  1027.          íá⌐ΓἿ offset ¿º origin.
  1028.                æ½ÑñπεΘá∩ «»Ñαᵿ∩ ó Σá⌐½Ñ óδ»«½¡∩ÑΓß∩ ¡á ¡«ó«¼ ¼ÑßΓÑ  αáß-
  1029.          »«½«ªÑ¡¿∩.
  1030.                Çαúπ¼Ñ¡Γ origin ¼«ªÑΓ íδΓ∞ «ñ¡«⌐ ¿º ß½ÑñπεΘ¿σ ¬«¡ßΓá¡Γ, «»-
  1031.          αÑñѽѡ¡δσ ó <stdio.h>.
  1032.             
  1033.             ORIGIN                ÄÅÉàäàïàìêà
  1034.           
  1035.             SEEK-SET              ¡áτὫ Σá⌐½á.
  1036.             
  1037.             SEEK-CUR              ΓѬπΘá∩ »«º¿µ¿∩ π¬áºáΓѽ∩ ¡á
  1038.                                   Σá⌐½.
  1039.             
  1040.             SEEK-END              ¬«¡Ñµ Σá⌐½á.
  1041.             
  1042.                öπ¡¬µ¿∩  lseek ¿ß»«½∞ºπÑΓß∩ ñ½∩ »ÑαѼÑΘÑ¡¿∩ π¬áºáΓѽ∩ ó ½ε-
  1043.          í«Ñ ¼ÑßΓ« Σá⌐½á. ô¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ αẼÑΘÑ¡ ó¡Ñ ¬«¡µá  Σá⌐½á.
  1044.          Äñ¡á¬« »«»δΓ¬á αáß»«½«ª¿Γ∞ π¬áºáΓѽ∞ ¡á Σá⌐½ ó ¡áτá½Ñ Σá⌐½á «íδτ-
  1045.          ¡« »α¿ó«ñ¿Γ ¬ «Φ¿í¬Ñ.
  1046.             
  1047.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1048.             
  1049.                öπ¡¬µ¿∩  lseek ó«ºóαáΘáÑΓ αáºóÑΓó½Ñ¡¿Ñ origin ó íá⌐Γáσ, «»-
  1050.          αÑñѽѡ¡«Ñ ¬á¬ º¡áτÑ¡¿Ñ «Γ ¡«ó«⌐ »«º¿µ¿¿ ñ« ¡áτá½á Σá⌐½á. é«ºóαá-
  1051.          ΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á «Φ¿í¬π; errno  πßΓá¡áó½¿óáÑΓß∩  ó
  1052.          «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  1053.       
  1054.             éàïêùêìÇ                àà æî¢æïÄéÄà  çìÇùàìêà
  1055.             
  1056.             EBADF               ìÑóÑα¡δ⌐ handle-α Σá⌐½á.
  1057.             
  1058.             ENIVAL              ìÑóÑα¡«Ñ º¡áτÑ¡¿Ñ ñ½∩ origin   ¿½¿
  1059.                                 »«º¿µ¿∩,  «»αÑñѽѡ¡á∩  »α¿ »«¼«Θ¿
  1060.                                 offset,  ¡áσ«ñ¿Γß∩  »ÑαÑñ  ¡áτὫ¼
  1061.                                 Σá⌐½á.
  1062.  
  1063.                ä½∩ πßΓα«⌐ßΓó, ¡Ñ »α¿ß»«ß«í½Ñ¡¡δσ ñ½∩ »«¿ß¬á (seek), (Γᬿσ
  1064.  
  1065.                                       - 155 -
  1066.          
  1067.          
  1068.          ¬á¬ ΓÑନ¡á½ ¿ »ÑτáΓ∞), ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡Ñ«»αÑñѽѡ«.
  1069.                æ¼. ΓᬪѠfseek, tell.
  1070.             
  1071.             Åα¿¼Ñα:
  1072.             
  1073.             #include <io.h>
  1074.             #include <fcntl.h>
  1075.             #include <stdlib.h>
  1076.             int fh;
  1077.             long position;
  1078.             fh = open("data", O_RDONLY);
  1079.             .
  1080.             .
  1081.             .
  1082.             /* 0 - αáºóÑΓó½Ñ¡¿Ñ «Γ ¡áτá½á */
  1083.             position = lseek (fh, 0L, SEEK_SET);
  1084.             if (position == -1L)
  1085.                perror("lseek to beginning failed");
  1086.             .
  1087.             .
  1088.             .
  1089.             /* ¡áσ«ñ¿Γ ΓѬπΘπε »«º¿µ¿ε */
  1090.             position = lseek (fh, 0L, SEEK_CUR);
  1091.             if (position == -1L)
  1092.                perror("lseek to current position failed");
  1093.             .
  1094.             .
  1095.             .
  1096.             /* óδ»«½¡∩ÑΓ ñ« ¬«¡µá Σá⌐½á */
  1097.             if (position == -1L)
  1098.                perror("lseek to end failed");.
  1099.       
  1100.             
  1101.                LTOA
  1102.                 
  1103.                #include <stdlib.h>         ÆαÑíπÑΓß∩    Γ«½∞¬«    ñ½∩
  1104.                                            «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  1105.                char *ltoa(value,string,radix);
  1106.                int value;                  »αÑ«íαáºπѼ«Ñ τ¿ß½«
  1107.                char *string;               ßΓ᫬á αѺπ½∞ΓáΓá
  1108.                int radix;                  «ß¡«óá¡¿Ñ value
  1109.                
  1110.                Ä»¿ßá¡¿Ñ.
  1111.                 
  1112.                öπ¡¬µ¿∩ ltoa »αÑ«íαáºπÑΓ ß¿¼ó«½δ value ó ß¿¼ó«½∞¡πε ßΓ᫬π,
  1113.          ºá¬á¡τ¿óáεΘπεß∩  NULL-ß¿¼ó«½«¼,  ¿ ºá»«¼¿¡áÑΓ αѺπ½∞ΓáΓ ó string.
  1114.          Çαúπ¼Ñ¡Γ radix «»αÑñѽ∩ÑΓ «ß¡«óá¡¿Ñ ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ ñ½∩  value;
  1115.          Ñú«  º¡áτÑ¡¿Ñ ¼«ªÑΓ ½ÑªáΓ∞ ó »αÑñѽáσ «Γ 2 ñ« 36. àß½¿ radix = 10
  1116.          ¿ value - «Γα¿µáΓѽ∞¡«Ñ τ¿ß½«, Γ« »Ñαóδ¼ ß¿¼ó«½«¼  αѺπ½∞Γ¿απεΘÑ⌐
  1117.          ßΓ᫬¿ íπñÑΓ º¡á¬ ¼¿¡πß.
  1118.                 
  1119.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1120.                 
  1121.                öπ¡¬µ¿∩  ltoa ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π. é«ºóαáΘáѼ«ú«
  1122.          º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  1123.  
  1124.                                       - 156 -
  1125.          
  1126.          
  1127.                æ¼.ΓᬪѠitoa, ultoa.
  1128.                 
  1129.                çá¼Ñτá¡¿Ñ! ÉẼÑα »á¼∩Γ¿, «Γó«ñ¿¼«⌐ ñ½∩ string, ñ«½ªÑ¡ íδΓ∞
  1130.          í«½∞ΦÑ, τѼ ΓαÑíπÑΓß∩ ñ½∩ ó«ºóαáΘáѼ«⌐ ßΓ᫬¿. öπ¡¬µ¿∩ ¼«ªÑΓ ó«º-
  1131.          óαáΘáΓ∞ ßΓ᫬π ñ½¿¡«⌐ ñ« 33 íá⌐Γ«ó.
  1132.                 
  1133.                Åα¿¼Ñα:
  1134.                 
  1135.                #include <stdlib.h>
  1136.                int radix=10;
  1137.                char buffer[20];
  1138.                char *p;
  1139.                p=itoa(-344115L,buffer,radix); /*p="-344115"*/
  1140.       
  1141.             
  1142.                MALLOC
  1143.             
  1144.                #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1145.                                       Σπ¡¬µ¿¿
  1146.                char *malloc(size);
  1147.                unsigned size;         ¬«½¿τÑßΓó« íá⌐Γ«ó ó ºáσóáτÑ¡¡«¼
  1148.                                       í½«¬Ñ
  1149.                
  1150.                Ä»¿ßá¡¿Ñ.
  1151.             
  1152.                öπ¡¬µ¿∩ malloc ºáσóáΓδóáÑΓ í½«¬ »á¼∩Γ¿  »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ  ¡Ñ
  1153.          ¼Ñ¡∞ΦÑ⌐,  τѼ  ¿º  size íá⌐Γ«ó. (ü½«¬ ¼«ªÑΓ íδΓ∞ í«½∞ΦÑ, τѼ size
  1154.          íá⌐Γ«ó, »α¿¡áñ½ÑªáΘ¿σ »α«ßΓαá¡ßΓóπ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ ñ½∩  óδαáó-
  1155.          ¡¿óá¡¿∩ ¿ ñ½∩ »«ññÑαªá¡¿∩ ¿¡Σ«α¼áµ¿¿).
  1156.             
  1157.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1158.             
  1159.                öπ¡¬µ¿∩  malloc  ó«ºóαáΘáÑΓ  char-π¬áºáΓѽ∞  ¡á ºáσóáτÑ¡¡«Ñ
  1160.          »α«ßΓαá¡ßΓó«.
  1161.                é »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ,  úá-
  1162.          αá¡Γ¿α«óá¡«  óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ
  1163.          »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩  »αÑ«í-
  1164.          αẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
  1165.                é«ºóαáΘáÑΓß∩  º¡áτÑ¡¿Ñ NULL, Ñß½¿ ßó«í«ñ¡«⌐ »á¼∩Γ¿ «ßΓὫß∞
  1166.          ¼á½«.
  1167.                æ¼.ΓᬪѠcalloc, free, realloc.
  1168.             
  1169.                Åα¿¼Ñα:
  1170.             
  1171.                #include <malloc.h>
  1172.                int *intarray;
  1173.                /* ºáσóáΓδóáÑΓ »α«ßΓαá¡ßΓó« ñ½∩ 20 µÑ½δσ */
  1174.                intarray=(int*)malloc(20*sizeof(int));
  1175.       
  1176.             
  1177.                MATHERR
  1178.             
  1179.                #include <math.h>
  1180.                int matherr(x);
  1181.                struct exception *x;     ¿¡Σ«α¼áµ¿∩  «  ¼áΓѼáΓ¿τÑ߬¿σ
  1182.  
  1183.                                       - 157 -
  1184.          
  1185.          
  1186.                                         ¿ß¬½ετÑ¡¿∩σ
  1187.                
  1188.                Ä»¿ßá¡¿Ñ.
  1189.             
  1190.                öπ¡¬µ¿∩ matherr «íαáíáΓδóáÑΓ «Φ¿í¬¿, »«α«ªñÑ¡¡δÑ  Σπ¡¬µ¿∩¼¿
  1191.          ¼áΓѼáΓ¿τÑ߬«⌐   í¿í½¿«ΓѬ¿.   îáΓѼáΓ¿τÑ߬¿Ñ   Σπ¡¬µ¿¿  óδºδóáεΓ
  1192.          matherr, ¬«úñá «í¡áαπªÑ¡á «Φ¿í¬á. Å«½∞º«óáΓѽ∞  ¼«ªÑΓ  «íÑß»Ñτ¿Γ∞
  1193.          αẽ¿τ¡δÑ «íΩ∩ó½Ñ¡¿∩ («»αÑñѽѡ¿∩) ñ½∩ Σπ¡¬µ¿¿ matherr, óδ»«½¡∩ε-
  1194.          Θ¿Ñ «íαáí«Γ¬π ß»Ñµ¿á½∞¡δσ «Φ¿í«¬.
  1195.                àß½¿  ó  ¼áΓѼáΓ¿τÑ߬«⌐  »α«µÑñπαѠ󫺡¿¬½á «Φ¿í¬á, matherr
  1196.          óδºδóáÑΓß∩ ß π¬áºáΓѽѼ ¡á  ß½ÑñπεΘπε  ßΓαπ¬Γπαπ  («íΩ∩ó½Ñ¡¡πε  ó
  1197.          <math.h>) ¬á¬ áαúπ¼Ñ¡Γ.
  1198.             
  1199.                struct exeption {
  1200.                int type;
  1201.                char *name;
  1202.                double arg1, arg2, retval;
  1203.                };
  1204.             
  1205.                Type  «»αÑñѽ∩ÑΓ  Γ¿»  ¼áΓѼáΓ¿τÑ߬«⌐ «Φ¿í¬¿. Ä¡ ¼«ªÑΓ íδΓ∞
  1206.          «ñ¡¿¼ ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐, «íΩ∩ó½Ñ¡¡δσ ó <math.h>
  1207.       
  1208.           ç¡áτÑ¡¿Ñ                       àú« ß¼δß½
  1209.                            
  1210.           DOMAIN               ÄΦ¿í¬á «í½áßΓ¿ («»αÑñѽѡ¿∩) áαúπ¼Ñ¡Γá.
  1211.                            
  1212.           SING                 Äß«íÑ¡¡«ßΓ∞ áαúπ¼Ñ¡Γá.
  1213.                            
  1214.           OVERFLOW             ÄΦ¿í¬á ñ¿á»áº«¡á («í½áßΓ¿) »ÑαÑ»«½¡Ñ¡¿∩
  1215.                            
  1216.           UNDERFLOW            ÄΦ¿í¬á ñ¿á»áº«¡á »«ΓÑα¿ º¡áτ¿¼«ßΓ¿.
  1217.                 
  1218.           TLOSS                ÄíΘá∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
  1219.                            
  1220.           PLOSS                ùáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
  1221.             
  1222.                ¥½Ñ¼Ñ¡Γ ßΓαπ¬Γπαδ name ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á ßΓ᫬π, «¬á¡-
  1223.          τ¿óáεΘπεß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ ¿ ß«ñÑαªáΘπε ¿¼∩  Σπ¡¬µ¿¿,  óδºóáóΦÑ⌐
  1224.          «Φ¿í¬π.  ¥½Ñ¼Ñ¡Γδ ßΓαπ¬Γπαδ arg1 ¿ arg2 «»αÑñѽ∩εΓ º¡áτÑ¡¿∩, óδº-
  1225.          óáóΦ¿Ñ «Φ¿í¬π. (àß½¿ ºáñá¡ Γ«½∞¬« «ñ¿¡ áαúπ¼Ñ¡Γ, «¡  ºá»«¼¿¡áÑΓß∩
  1226.          ó  arg1).  ä½∩ ºáñá¡¡«⌐ «Φ¿í¬¿ »« π¼«½τá¡¿ε ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ
  1227.          retval. ¥Γ« º¡áτÑ¡¿Ñ ¼«ª¡« ¿º¼Ñ¡¿Γ∞.  Å«  ó«ºóαáΘáѼ«¼π  º¡áτÑ¡¿ε
  1228.          ¼«ª¡«  «»αÑñѽ¿Γ∞,  ñÑ⌐ßΓó¿Γѽ∞¡«  ¿½¿  ¡ÑΓ ó«º¡¿¬½á «Φ¿í¬á. àß½¿
  1229.          matherr ó«ºóαáΘáÑΓ 0, óδßóÑτ¿óáÑΓß∩ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ  ¿  errno
  1230.          πßΓá¡áó½¿óáÑΓß∩  ó  »α¿í½¿º¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ «Φ¿í¬¿. àß½¿ matherr
  1231.          ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ¡Ñ  óδßóÑτ¿óá-
  1232.          ÑΓß∩  ¿ errno «ßΓáÑΓß∩ ¡Ñ¿º¼Ñ¡¡«⌐.
  1233.       
  1234.             
  1235.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1236.             
  1237.                öπ¡¬µ¿∩  matherr  ó  ß½πτáÑ «Φ¿í¬¿ ó«ºóαáΘáÑΓ 0 ¿ ¡Ñ¡π½Ñó«Ñ
  1238.          º¡áτÑ¡¿Ñ, Ñß½¿ ñÑ⌐ßΓó¿Ñ óÑα¡« ¿ πß»ÑΦ¡« óδ»«½¡Ñ¡«.
  1239.                æ¼.ΓᬪѠacos, asin, atan, atan2, bessel, ccabs, cosh, exp,
  1240.          hypot, log, pow, sin, sinh, sqrt, tan.
  1241.  
  1242.                                       - 158 -
  1243.          
  1244.          
  1245.             
  1246.                Åα¿¼Ñα:
  1247.             
  1248.                #include <math.h>
  1249.                #include <string.h>
  1250.                /* óδ½áó½¿óáÑΓ «Φ¿í¬¿ ó ó맮óáσ »α«µÑñπα log ¿ log10.  àß½¿
  1251.          «Φ¿í¬á  ∩ó½∩ÑΓß∩  αѺπ½∞ΓáΓ«¼  «Γα¿µáΓѽ∞¡«ú«  áαúπ¼Ñ¡Γá  («Φ¿í¬á
  1252.          DOMAIN), ó«ºóαáΘáÑΓß∩ log ¿½¿ log10 ñ½∩ áíß«½εΓ¡«ú« º¡áτÑ¡¿∩  áα-
  1253.          úπ¼Ñ¡Γá.  Å«∩ó½∩ÑΓß∩  ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ. àß½¿ «Φ¿í¬á ∩ó½∩ÑΓß∩ 0
  1254.          áαúπ¼Ñ¡Γ«¼  ¿½¿ «Φ¿í¬á ßúÑ¡Ñα¿α«óá¡á ¡Ñ¬«Γ«α«⌐ ñαπú«⌐ »α«µÑñπα«⌐,
  1255.          ñÑ⌐ßΓó¿Ñ óδí¿αáÑΓß∩ »« π¼«½τá¡¿ε */
  1256.                int matherr(x)
  1257.                struct exception *x;
  1258.                {
  1259.                if (x->type==DOMAIN) {
  1260.                  if(strsmp(x->name,"log")==0\0  {
  1261.                     x->retval=log(-(x->arg1));
  1262.                     return(1);
  1263.                     }
  1264.                  else if(strsmp(x->name,"log10")==0) {
  1265.                     x->retval=log10(-(x->arg1));
  1266.                     return(1);
  1267.                     }
  1268.                }
  1269.                return(0);
  1270.                /* ¿ß»«½∞ºπÑΓß∩ ñÑ⌐ßΓó¿Ñ »« π¼«½τá¡¿ε */
  1271.                }
  1272.             
  1273.             
  1274.                _MEMAVL
  1275.             
  1276.                #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1277.                                       Σπ¡¬µ¿¿
  1278.                unsigned int_memavl();
  1279.                
  1280.                Ä»¿ßá¡¿Ñ.
  1281.             
  1282.                öπ¡¬µ¿∩ _memavl ó«ºóαáΘáÑΓ »α¿í½¿º¿Γѽ∞¡δ⌐ αẼÑα »á¼∩Γ¿  ó
  1283.          íá⌐Γáσ,  ñ«ßΓπ»¡«⌐  ñ½∩  ñ¿¡á¼¿τÑ߬«ú«  αẼÑΘÑ¡¿∩ ó π¼á½τ¿óáѼ«¼
  1284.          ßÑú¼Ñ¡ΓÑ ñá¡¡δσ.  ¥Γá  Σπ¡¬µ¿∩  ¼«ªÑΓ  ¿ß»«½∞º«óáΓ∞ß∩  ß  calloc,
  1285.          malloc,  realloc ó ¼á½«⌐ ¿ ßαÑñ¡Ñ⌐ ¼«ñѽ∩σ »á¼∩Γ¿ ¿ ß _nmalloc ó«
  1286.          óßÑσ ¼«ñѽ∩σ »á¼∩Γ¿.
  1287.             
  1288.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1289.             
  1290.                öπ¡¬µ¿∩ _memavl ó«ºóαáΘáÑΓ αẼÑα ó íá⌐Γáσ ¬á¬  íѺº¡á¬«ó«Ñ
  1291.          µÑ½«Ñ.
  1292.                æ¼.ΓᬪѠcalloc, malloc, _freect, realloc, stackavail.
  1293.             
  1294.                Åα¿¼Ñα:
  1295.             
  1296.                main()
  1297.                {
  1298.                long *longptr;
  1299.                printf("Memory available before malloc=%u\n",
  1300.  
  1301.                                       - 159 -
  1302.          
  1303.          
  1304.                      _memavl());
  1305.                longptr=(long*)malloc(5000*sizeof(long));
  1306.                printf("Memory available after malloc=%u\n",
  1307.                      _memavl());
  1308.                }
  1309.       
  1310.  
  1311.                MEMCCPY
  1312.             
  1313.                #include <memory.f>          ÆαÑíπÑΓß∩   Γ«½∞¬«    ñ½∩
  1314.                #include <string.h>          «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿;   ¿ß-
  1315.                                             »«½∞ºπÑΓ ½¿í« <string.h>,
  1316.                                             ½¿í« <memory.h.>
  1317.             
  1318.                char *memccpy(dest,src,c,cnt);
  1319.                char *dest;                   ô¬áºáΓѽ∞  ¡á  αѺπ½∞ΓáΓ
  1320.                char *src;                    ô¬áºáΓѽ∞  ¡á   ¿ßσ«ñ¡δ⌐
  1321.                                              íπΣÑα
  1322.                int c;                        Å«ß½Ññ¡¿⌐     ¬«»¿απѼδ⌐
  1323.                                              ß¿¼ó«½
  1324.                insigned cnt;                 è«½¿τÑßΓó« ß¿¼ó«½«ó
  1325.             
  1326.                Ä»¿ßá¡¿Ñ.
  1327.                 
  1328.                öπ¡¬µ¿∩  memccpy  ¬«»¿απÑΓ 0 ¿½¿ í«½ÑÑ íá⌐Γ«ó ¿º src ó dest
  1329.          ó»½«Γ∞ ñ« »Ñαó«ú« »«∩ó½Ñ¡¿∩ ß¿¼ó«½á, π¬áºá¡¡«ú« ó »ÑαѼѡ¡«⌐ c (¿
  1330.          ó¬½ετá∩ Ñú«), ¿½¿ »«¬á ¡Ñ íπñÑΓ ß¬«»¿α«óá¡« cnt íá⌐Γ«ó.
  1331.             
  1332.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1333.                  
  1334.                àß½¿  ß¿¼ó«½  c ß¬«»¿α«óá¡, memccpy ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
  1335.          Γ«Γ íá⌐Γ ó dest, ¬«Γ«αδ⌐ ¡Ñ»«ßαÑñßΓóÑ¡¡« ß½ÑñπÑΓ ºá ß¿¼ó«½«¼. àß-
  1336.          ½¿ c ¡Ñ íδ½ ß¬«»¿α«óá¡, memccpy ó«ºóαáΘáÑΓ NULL.
  1337.                æ¼. ΓᬪѠΣπ¡¬µ¿¿ memchr, memcmp, memcpy, memset.
  1338.             
  1339.                Åα¿¼Ñα:
  1340.            
  1341.                #include <memory.h>
  1342.                char buffer[100],source[100];
  1343.                char *result;
  1344.                .
  1345.                .
  1346.                .
  1347.                /* è«»¿απεΓß∩ íá⌐Γδ ¿º source ó buffer, »«¬á ¡Ñ íπñÑΓ
  1348.                ** ß¬«»¿α«óá¡« '\n', ¡« ¡Ñ í«½ÑÑ 100 íá⌐Γ«ó
  1349.                */
  1350.                result=memccpy(buffer,source,'\n',100);
  1351.       
  1352.                    
  1353.                MEMCHR
  1354.             
  1355.                #include <memory.h>       ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
  1356.                #include <string.h>       «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿; ¿ß»«½∞-
  1357.                                          ºπÑΓ ½¿í«  <string.h>, ½¿í«
  1358.                                          <memory.h>
  1359.  
  1360.                                       - 160 -
  1361.          
  1362.          
  1363.                char *memchr(buf,c,cnt);
  1364.                char *buf;                 ô¬áºáΓѽ∞ ¡á íπΣÑα
  1365.                int c;                     è«»¿απѼδ⌐ ß¿¼ó«½
  1366.                unsigned cnt;              è«½¿τÑßΓó« ß¿¼ó«½«ó
  1367.             
  1368.                Ä»¿ßá¡¿Ñ.
  1369.             
  1370.                öπ¡¬µ¿∩ memchr ¡áσ«ñ¿Γ »ÑαóδÑ cnt íá⌐Γ«ó ¿º buf ß µÑ½∞ε «í-
  1371.          ¡áαπªÑ¡¿∩ »Ñαó«ú« »«∩ó½Ñ¡¿∩ ß¿¼ó«½á c. Å«¿ß¬ »α«ñ«½ªáÑΓß∩ ñ«  ΓÑσ
  1372.          »«α, »«¬á ¡Ñ íπñÑΓ ¡á⌐ñÑ¡ π¬áºá¡¡δ⌐ ß¿¼ó«½ ¿½¿ ¡Ñ íπñπΓ »α«óÑαÑ¡δ
  1373.          óßÑ cnt íá⌐Γ«ó.
  1374.             
  1375.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1376.             
  1377.                öπ¡¬µ¿∩ memchr ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á αáß»«½«ªÑ¡¿Ñ ß¿¼ó«½á
  1378.          c  ó  buf.  àß½¿  ß¿¼ó«½ c ¡Ñ íπñÑΓ «í¡áαπªÑ¡ ó »Ñαóδσ cnt íá⌐Γáσ
  1379.          buf, ó«ºóαáΘáÑΓß∩ NULL.
  1380.                C¼. ΓᬪѠmemccpy, memcmp, memcpy, memset.
  1381.             
  1382.                Åα¿¼Ñα:
  1383.                 
  1384.                #include <memory.h>
  1385.                char buffer[100];
  1386.                char *result;
  1387.                .
  1388.                .
  1389.                .
  1390.                /*  Å«¿ß¬ »Ñαó«ú« ß¿¼ó«½á 'a' ó buffer. àß½¿ 'a' ¡ÑΓ ó
  1391.                ** »Ñαóδσ 100 íá⌐Γáσ, ó«ºóαáΘáÑΓß∩ NULL
  1392.                */
  1393.                result=memchr(buffer,'a',100);
  1394.       
  1395.             
  1396.                MEMCMP
  1397.                 
  1398.                #include <memory.h>       ÆαÑíπÑΓß∩    Γ«½∞¬«     ñ½∩
  1399.                #include <string.h>       «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿; ¿ß»«½∞-
  1400.                                          ºπÑΓ ½¿í«  <memory.h>, ½¿í«
  1401.                                          <string.h>
  1402.                int memcmp(buf1,buf2,cnt);
  1403.                char *buf1;                ÅÑαóδ⌐ íπΣÑα
  1404.                char *buf2;                éΓ«α«⌐ íπΣÑα
  1405.                unsigned cnt;              è«½¿τÑßΓó« ß¿¼ó«½«ó
  1406.                                                   
  1407.            
  1408.                Ä»¿ßá¡¿Ñ.
  1409.  
  1410.                öπ¡¬µ¿∩ memcmp »α«¿ºó«ñ¿Γ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬«Ñ ßαáó¡Ñ¡¿Ñ »Ñα-
  1411.          óδσ cnt íá⌐Γ«ó ¿º buf1 ¿ buf2 ¿ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ,  π¬áºδóáεΘÑÑ
  1412.          ¡á ß««Γ¡«ΦÑ¡¿Ñ φΓ¿σ íπΣÑα«ó, Γᬠ¬á¬ »«¬áºá¡« ¡¿ªÑ:
  1413.  
  1414.                 ç¡áτÑ¡¿Ñ                          æ¼δß½
  1415.       
  1416.                 îÑ¡∞ΦÑ 0                      buf1 ¼Ñ¡∞ΦÑ,τѼ buf2
  1417.                 
  1418.  
  1419.                                       - 161 -
  1420.          
  1421.          
  1422.                 0                             buf1 ¿ñÑ¡Γ¿τÑ¡ buf2
  1423.                 
  1424.                 ü«½∞ΦÑ 0                      buf1 í«½∞ΦÑ,τѼ buf2
  1425.  
  1426.                 
  1427.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1428.             
  1429.                öπ¡¬µ¿∩ memcmp ó«ºóαáΘáÑΓ µÑ½«Ñ τ¿ß½«.
  1430.                æ¼. ΓᬪѠmemccpy, memchr, memcpy, memset.
  1431.             
  1432.                Åα¿¼Ñα:
  1433.             
  1434.                #include <memory.h>
  1435.                char first[100], second[100];
  1436.                int result;
  1437.                /* æ½ÑñπεΘ¿⌐ «»ÑαáΓ«α ßαáó¡¿óáÑΓ first[] ¿ second[] ¿
  1438.                ** «»αÑñѽ∩ÑΓ, τΓ« ¿º ¡¿σ í«½∞ΦÑ. àß½¿   »ÑαóδÑ  100
  1439.                ** íá⌐Γ«ó π¬áºá¡¡δσ íπΣÑα«ó ¿ñÑ¡Γ¿τ¡δ, Γ« «¡¿ ßτ¿Γá-
  1440.                ** εΓß∩ αáó¡δ¼¿ */
  1441.                result=memcmp(first,second,100);
  1442.       
  1443.                 
  1444.                MEMCPY
  1445.                 
  1446.                #include <memory.h>   ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1447.                #include <string.h>   Σπ¡¬µ¿¿;   ¿ß»«½∞ºπÑΓ       ½¿í«
  1448.                                      <string.h>, ½¿í« <memory.h>
  1449.                char memcpy (dest, src, cnt);
  1450.                char *dest;           π¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ
  1451.                char *src;            π¬áºáΓѽ∞ ¡á ¿ßσ«ñ¡δ⌐ íπΣÑα
  1452.                unsigned cnt;         ¬«½¿τÑßΓó« ß¿¼ó«½«ó
  1453.                 
  1454.                 
  1455.                Ä»¿ßá¡¿Ñ.
  1456.                 
  1457.                öπ¡¬µ¿∩  memcpy ¬«»¿απÑΓ cnt íá⌐Γ«ó ¿º src ó dest. àß½¿ ¡Ñ-
  1458.          ¬«Γ«αδÑ πτáßΓ¬¿ src ¿ dest »ÑαѬαδóáεΓß∩, memcpy úáαá¡Γ¿απÑΓ, τΓ«
  1459.          íá⌐Γδ ¿º »ÑαѬαδóáѼ«ú« πτáßΓ¬á, »α¿¡áñ½ÑªáΘ¿Ñ src, íπñπΓ  ß¬«»¿-
  1460.          α«óá¡δ »ÑαÑñ »ÑαѺỿß∞ε.
  1461.                 
  1462.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1463.                 
  1464.                öπ¡¬µ¿∩ memcpy ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á dest.
  1465.                æ¼.ΓᬪѠmemccpy, memchr, memcmp, memsct.
  1466.                 
  1467.                Åα¿¼Ñα:
  1468.                 
  1469.                #include <memory.h>
  1470.                char source [200], destiination [200];
  1471.                .
  1472.                .
  1473.                .
  1474.                /*  ÅÑαÑßδ½áεΓß∩  200 íá⌐Γ«ó ¿º **source ó destination ** ¿
  1475.          ó«ºóαáΘáÑΓß∩ π¬áºáΓѽ∞ ¡á destination */
  1476.                memcpy (destination, source, 200);
  1477.  
  1478.                                       - 162 -
  1479.          
  1480.          
  1481.       
  1482.                 
  1483.                MEMICMP
  1484.                 
  1485.                
  1486.                #include <memory.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1487.                #include <string.h>   Σπ¡¬µ¿¿;    ¿ß»«½∞ºπÑΓ      ½¿í«
  1488.                                      <string.h>, ½¿í« <memory.h>
  1489.                int memicmp (buf1, buf2, cnt);
  1490.                char *buf1;                    »Ñαóδ⌐ íπΣÑα
  1491.                char *buf2;                    óΓ«α«⌐ íπΣÑα
  1492.                unsigned cnt;                  ¬«½¿τÑßΓó« ß¿¼ó«½«ó
  1493.                 
  1494.                Ä»¿ßá¡¿Ñ.
  1495.                 
  1496.                öπ¡¬µ¿∩ memicmp  ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿  ßαáó¡¿óáÑΓ  »ÑαóδÑ  cnt
  1497.          íá⌐Γ«ó ¿º buf1 ¿ buf2 ó¡Ñ ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á αÑú¿ßΓαá, Γ.Ñ. íπ¬-
  1498.          óδ óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó ßτ¿ΓáεΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿. öπ¡¬µ¿∩
  1499.          memicmp ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, π¬áºδóáεΘÑÑ ß««Γ¡«ΦÑ¡¿Ñ buf1 ¿ buf2,
  1500.          á ¿¼Ñ¡¡«:
  1501.                 
  1502.                éѽ¿τ¿¡á               ç¡áτÑ¡¿Ñ
  1503.                 
  1504.                ¼Ñ¡∞ΦÑ 0          buf1 ¼Ñ¡∞ΦÑ, τѼ buf2
  1505.                               
  1506.                0                 buf1 ¿ñÑ¡Γ¿τ¡« buf2
  1507.                 
  1508.                í«½∞ΦÑ 0          buf1 í«½∞ΦÑ, τѼ buf2
  1509.                 
  1510.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1511.                 
  1512.                öπ¡¬µ¿∩ memicmp ó«ºóαáΘáÑΓ µÑ½«Ñ τ¿ß½«.
  1513.                æ¼.ΓᬪѠmemccpy, memchr, memcmp, memcpy, memset.
  1514.                 
  1515.                Åα¿¼Ñα:
  1516.                 
  1517.                #include <memory.h>
  1518.                char first[100], second [100];
  1519.                int result;
  1520.                strcpy (first,"Those, Who Will Not Learn from
  1521.                        History");
  1522.                strcpy  (second,  "THOSE WHO WILL NOT LEARN FROM their
  1523.                         mistakes");
  1524.                result = memicmp (first, second, 29);
  1525.                printf ("%d\n", result);
  1526.             
  1527.                ìá óδσ«ñÑ:
  1528.                        0
  1529.       
  1530.             
  1531.                MEMSET
  1532.                 
  1533.                #include <memory.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1534.                #include <string.h>   Σπ¡¬µ¿¿;    ¿ß»«½∞ºπÑΓ      ½¿í«
  1535.                                      <string.h>, ½¿í« <memory.h>
  1536.  
  1537.                                       - 163 -
  1538.          
  1539.          
  1540.                char *memset (dest, c, cnt);
  1541.                char *dest;                 π¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ
  1542.                int c;                      ß¿¼ó«½-ºá»«½¡¿Γѽ∞
  1543.                unsigned cnt;               ¬«½¿τÑßΓó« ß¿¼ó«½«ó
  1544.                 
  1545.                Ä»¿ßá¡¿Ñ.
  1546.                 
  1547.                öπ¡¬µ¿∩ memset ºá»«½¡∩ÑΓ »ÑαóδÑ cnt íá⌐Γ«ó íπΣÑαá dest ß¿¼-
  1548.          ó«½«¼ c.
  1549.                 
  1550.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1551.                 
  1552.                öπ¡¬µ¿∩ memset ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á íπΣÑα dest.
  1553.                æ¼.ΓᬪѠmemccpy, memchr, memcmp, memcpy
  1554.                 
  1555.                Åα¿¼Ñα:
  1556.                 
  1557.                #include <memory.h>
  1558.                char buffer [100];
  1559.                /* ºá»«½¡∩ÑΓ »ÑαóδÑ 100 íá⌐Γ«ó buffer
  1560.                ** ¡π½∩¼¿ */
  1561.                memset (buffer, '\0', 100);
  1562.       
  1563.                 
  1564.                MKDIR
  1565.             
  1566.                #include <direct.h>  ΓαÑíπÑΓß∩  Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1567.                                     Σπ¡¬µ¿¿
  1568.                int mkdir(pathname);
  1569.                char *pathname;      path-¿¼∩ ¡«ó«ú« ñ¿αÑ¬Γ«α¿∩
  1570.                
  1571.                Ä»¿ßá¡¿Ñ.
  1572.             
  1573.                öπ¡¬µ¿∩ mkdir ß«ºñáÑΓ ¡«óδ⌐ ñ¿αÑ¬Γ«α¿⌐ ß ºáñá¡¡δ¼ pathname.
  1574.          é  «ñ¡«  ¿  Γ« ªÑ óαѼ∩ ¼«ªÑΓ íδΓ∞ ß«ºñá¡ Γ«½∞¬« «ñ¿¡ ñ¿αÑ¬Γ«α¿⌐,
  1575.          »«Γ«¼π τΓ« Γ«½∞¬« »«ß½Ññ¡∩∩ ¬«¼»«¡Ñ¡Γá  pathname  ¼«ªÑΓ  ¡áºδóáΓ∞
  1576.          ¡«óδ⌐ ñ¿αÑ¬Γ«α¿⌐.
  1577.             
  1578.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1579.             
  1580.                öπ¡¬µ¿∩  mkdir ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ ß«ºñá¡ ¡«óδ⌐ ñ¿-
  1581.          αÑ¬Γ«α¿⌐. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í  «Φ¿í¬Ñ   ¿
  1582.          errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  1583.             
  1584.             
  1585.          ç¡áτÑ¡¿Ñ                      àú« ß¼δß½
  1586.                                  
  1587.          EACCES               ä¿αÑ¬Γ«α¿⌐  ¡Ñ  ß«ºñá¡.  çáñá¡¡«Ñ   ¿¼∩
  1588.                               ∩ó½∩ÑΓß∩  ¿¼Ñ¡Ñ¼  ßπΘÑßΓóπεΘÑú«  Σá⌐½á,
  1589.                               ñ¿αÑ¬Γ«α¿∩, πßΓα«⌐ßΓóá.
  1590.                            
  1591.          ENOENT               Path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  1592.             
  1593.                æ¼.ΓᬪѠchdir, rmdir.
  1594.             
  1595.  
  1596.                                       - 164 -
  1597.          
  1598.          
  1599.                Åα¿¼Ñα:
  1600.             
  1601.                #include <direct.h>
  1602.                int result;
  1603.                /*  ß½ÑñπεΘ¿Ñ  2  «»ÑαáΓ«αá  ß«ºñáεΓ 2 ¡«óδσ ñ¿αÑ¬Γ«α¿∩: **
  1604.          «ñ¿¡ - ó ¬«α¡Ñ ñ¿ß¬á b, óΓ«α«⌐ - ó »«ññ¿αÑ¬Γ«α¿¿ ** "tmp" ΓѬπΘÑ-
  1605.          ú« αáí«τÑú« ñ¿αÑ¬Γ«α¿∩ */
  1606.                result=mkdir("b:/tmp); /* ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡«
  1607.                                       ** ΓᬪѠ"b:\\tmp" */
  1608.                result=mkdir("tmp/sub"); /* ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡«
  1609.                                         ** ΓᬪѠ"tmp\\sub" */
  1610.       
  1611.       
  1612.             
  1613.                MKTEMP
  1614.             
  1615.                #imclude <io.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1616.                                  Σπ¡¬µ¿¿
  1617.                char *mktemp(template);
  1618.                char *template;   Φáí½«¡ ¿¼Ñ¡¿ Σá⌐½á
  1619.                
  1620.                Ä»¿ßá¡¿Ñ.
  1621.             
  1622.                öπ¡¬µ¿∩  mktemp  ß«ºñáÑΓ  π¡¿¬á½∞¡«Ñ ¿¼∩ Σá⌐½á, ¼«ñ¿Σ¿µ¿απ∩
  1623.          ñá¡¡δ⌐ template. Çαúπ¼Ñ¡Γ template ¿¼ÑÑΓ Σ«α¼π:
  1624.             
  1625.                baseXXXXXX,
  1626.             
  1627.                úñÑ base ∩ó½∩ÑΓß∩ τáßΓ∞ε ¡«ó«ú« ¿¼Ñ¡¿ Σá⌐½á,  »αÑñ½áúáѼ«ú«
  1628.          »«½∞º«óáΓѽѼ  ¿ X...X ∩ó½∩εΓß∩ º¡á¬«¼ÑßΓἿ ñ½∩ τáßΓ¿, Σ«α¼¿απÑ-
  1629.          ¼«⌐ mktemp; mktemp ß«σαá¡∩ÑΓ base ¿ ºá¼Ñ¡∩ÑΓ ΦÑßΓ∞  ò  á½Σáó¿Γ¡δ¼
  1630.          ß¿¼ó«½«¼,  ß½ÑñπεΘ¿¼  ºá º¡áτÑ¡¿Ñ¼ ¿º 5 µ¿Σα. 5-µ¿Σα«ó«Ñ º¡áτÑ¡¿Ñ
  1631.          ∩ó½∩ÑΓß∩ π¡¿¬á½∞¡δ¼ ¡«¼Ñα«¼, ¿ñÑ¡Γ¿Σ¿µ¿απεΘ¿¼ óδºδóáѼδ⌐ »α«µÑßß.
  1632.          Åα¿ »Ñαó«¼ ó맮óÑ mktemp ß ºáñá¡¡δ¼  template  á½Σáó¿Γ¡δ⌐  ß¿¼ó«½
  1633.          αáóÑ¡  ß¿¼ó«½π  0('0').  é  »«ß½ÑñπεΘ¿σ ó맮óáσ ¿º Γ«ú« ªÑ ßἫú«
  1634.          »α«µÑßßá ß ΓѼ ªÑ ßá¼δ¼ template mktemp »α«óÑα∩ÑΓ, ¿ß»«½∞º«ó὿ß∞
  1635.          ½¿ αá¡ÑÑ ó«ºóαáΘÑ¡¡δÑ ¿¼Ñ¡á ñ½∩ ß«ºñá¡¿∩ Σá⌐½«ó. àß½¿ Σá⌐½á ß ºá-
  1636.          ñá¡δ¼ ¿¼Ñ¡Ñ¼ ¡Ñ ßπΘÑßΓóπÑΓ, mktemp ó«ºóαáΘáÑΓ φΓ« ¿¼∩.  àß½¿  ñ½∩
  1637.          óßÑσ αá¡ÑÑ ó«ºóαáΘÑ¡¡δσ ¿¼Ñ¡ Σá⌐½δ ßπΘÑßΓóπεΓ, mktemp ß«ºñáÑΓ ¡«-
  1638.          ó«Ñ ¿¼∩, ºá¼Ñ¡∩∩ ó ¡Ñ¼ á½Σáó¿Γ¡δ⌐ ß¿¼ó«½ ß½ÑñπεΘÑ⌐ ñ«ßΓπ»¡«⌐ íπ¬-
  1639.          ó«⌐ ¡¿ª¡Ñú« αÑú¿ßΓαá.
  1640.                ìá»α¿¼Ñα,  Ñß½¿  »Ñαó«Ñ ó«ºóαáΘÑ¡¡«Ñ ¿¼∩ í佫 t012345 ¿ φΓ«
  1641.          ¿¼∩ ¿ß»«½∞º«óὫß∞ ñ½∩ ß«ºñá¡¿∩ Σá⌐½á, Γ« ß½ÑñπεΘÑÑ  ó«ºóαáΘáѼ«Ñ
  1642.          ¿¼∩  íπñÑΓ ta12345. Åα¿ ß«ºñá¡¿¿ ¡«óδσ ¿¼Ñ¡ mktemp ¿ß»«½∞ºπÑΓ '0'
  1643.          ¿ íπ¬óδ ¡¿ª¡Ñú« αÑú¿ßΓαá «Γ "a" ñ« "z".
  1644.             
  1645.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1646.             
  1647.                öπ¡¬µ¿∩ mktemp  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á  ¼«ñ¿Σ¿µ¿α«óá¡¡δ⌐
  1648.          template.  é«ºóαáΘáÑ¼δ¼  º¡áτÑ¡¿Ñ¼  ∩ó½∩ÑΓß∩  NULL, Ñß½¿ áαúπ¼Ñ¡Γ
  1649.          template «íαẫóá¡ ¡ÑóÑα¡« ¿½¿ í«½∞ΦÑ ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡«  π¡¿-
  1650.          ¬á½∞¡δσ ¿¼Ñ¡ ¿º ºáñá¡¡«ú« template.
  1651.                æ¼«Γα¿ ΓᬪѠfopen, getpid, open.
  1652.             
  1653.                çá¼Ñτá¡¿Ñ.  öπ¡¬µ¿∩ mktemp úÑ¡Ñα¿απÑΓ π¡¿¬á½∞¡δÑ ¿¼Ñ¡á Σá⌐-
  1654.  
  1655.                                       - 165 -
  1656.          
  1657.          
  1658.          ½«ó, ¡« ¡Ñ ß«ºñáÑΓ ¿ ¡Ñ «Γ¬αδóáÑΓ Σá⌐½δ.
  1659.             
  1660.                Åα¿¼Ñα:
  1661.             
  1662.                #include <io.h>
  1663.                char *template="fnXXXXXX";
  1664.                char *result;
  1665.             
  1666.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδºδóáÑΓ mktemp ñ½∩ ß«ºñá¡¿∩ **  π¡¿-
  1667.          ¬á½∞¡«ú« ¿¼Ñ¡¿ Σá⌐½á */
  1668.                result=mktemp(template);
  1669.                MODF
  1670.                #include <math.h>
  1671.                double modf(x,intptr);
  1672.                double x;              º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
  1673.                double *intptr;        π¬áºáΓѽ∞ ¡á σαá¡Ñ¡¿Ñ µÑ½«⌐ τáßΓ¿
  1674.             
  1675.                Ä»¿ßá¡¿Ñ.
  1676.             
  1677.                öπ¡¬µ¿∩  modf  αáºαδóáÑΓ  º¡áτÑ¡¿Ñ  ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ x ¡á
  1678.          ñα«í¡πε ¿ µÑ½πε τáßΓ¿. é«ºóαáΘáÑΓß∩ º¡á¬«óá∩ ñα«í¡á∩ τáßΓ∞ x. ûÑ-
  1679.          ½á∩ τáßΓ∞ σαá¡¿Γß∩ ó intptr ¬á¬ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
  1680.             
  1681.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1682.             
  1683.                öπ¡¬µ¿∩ modf ó«ºóαáΘáÑΓ º¡á¬«óπε ñα«í¡πε τáßΓ∞ x. é«ºóαáΘá-
  1684.          Ñ¼«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  1685.                æ¼. ΓᬪѠfrexp, ldexp.
  1686.             
  1687.                Åα¿¼Ñα:
  1688.             
  1689.                #include <math.h>
  1690.                double x,y,n;
  1691.                x = -14.87654321;
  1692.                y = modf(x,&n);   /* y = -0.87654321, n = -14.0 */
  1693.       
  1694.             
  1695.                MOVEDATA
  1696.                 
  1697.                #include <memory.h>           ÆαÑíπÑΓß∩   Γ«½∞¬«   ñ½∩ «í-
  1698.                #include <string.h>           ∩ó½Ñ¡¿∩  Σπ¡¬µ¿¿, ¿ß»«½∞ºπÑΓ
  1699.                                              ½¿í«   <string.h>,      ½¿í«
  1700.                                              <memory.h>
  1701.             
  1702.               void movedata (srcseg,  srcoff,  destseg,  destoff,
  1703.                           nbytes);
  1704.               int srcseg;                    áñαÑß ¿ßσ«ñ¡«ú« ßÑú¼Ñ¡Γá
  1705.               int srcoff;                    ß¼ÑΘÑ¡¿Ñ ¿ßσ«ñ¡«ú« ßÑú¼Ñ¡Γá
  1706.               int destseg;                   áñαÑß αѺπ½∞Γ¿απεΘÑú« ßÑú¼Ñ¡Γá
  1707.               int destoff;                   ß¼ÑΘÑ¡¿Ñ  αѺπ½∞Γ¿απεΘÑú« ßÑú-
  1708.                                              ¼Ñ¡Γá
  1709.               unsigned nbytes;               ¬«½¿τÑßΓó« íá⌐Γ«ó
  1710.  
  1711.                 
  1712.  
  1713.                                       - 166 -
  1714.          
  1715.                Ä»¿ßá¡¿Ñ.
  1716.          
  1717.                öπ¡¬µ¿∩ movedata ¬«»¿απÑΓ nbytes íá⌐Γ«ó, ¡áτ¿¡á∩ ß ¿ßσ«ñ¡«-
  1718.          ú« áñαÑßá, «í«º¡áτÑ¡¡«ú« srcseg:srcoff, ó áñαÑß αѺπ½∞ΓáΓá, «í«º-
  1719.          ¡áτÑ¡¡δ⌐ destseg:destoff. öπ¡¬µ¿∩ movedata »αÑñ¡áº¡áτÑ¡á ñ½∩  »Ñ-
  1720.          αÑß佬¿  far-ñá¡¡δσ  ó  »α«úαá¼¼áσ ¼á½δσ ¿½¿ ßαÑñ¡¿σ ¼«ñѽÑ⌐, úñÑ
  1721.          áñαÑßá ßÑú¼Ñ¡Γ«ó ñá¡¡δσ ¡Ñ ¿ºóÑßΓ¡δ. é »α«úαá¼¼áσ í«½∞Φ¿σ ¼«ñѽÑ⌐
  1722.          ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á Σπ¡¬µ¿∩ memcpy,  ¬«úñá  áñαÑßá  ßÑú¼Ñ¡Γ«ó
  1723.          ¿ºóÑßΓ¡δ.
  1724.                 
  1725.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1726.                 
  1727.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1728.                æ¼. ΓᬪѠmemcpy, segread, FP_SEG.
  1729.                 
  1730.                çá¼Ñτá¡¿Ñ!  ç¡áτÑ¡¿∩  ßÑú¼Ñ¡Γ«ó  ñ½∩  áαúπ¼Ñ¡Γ«ó  srcseg  ¿
  1731.          destseg ¼«úπΓ íδΓ∞ »«½πτÑ¡δ ß  »«¼«Θ∞ε  »α¿¼Ñ¡Ñ¡¿∩  ½¿í«  Σπ¡¬µ¿¿
  1732.          segread, ½¿í« ¼á¬α««»αÑñѽѡ¿∩ FR_SEG.
  1733.                öπ¡¬µ¿∩ movedata ¡Ñ «íαáíáΓδóáÑΓ óßÑ ß½πτá¿ »ÑαÑß佫¬ ß »Ñ-
  1734.          αѬαδΓ¿Ñ¼  ¬«ααÑ¬Γ¡«  (»ÑαÑß佬¿  ß »ÑαѬαδΓ¿Ñ¼ »α«¿ßσ«ñ∩Γ Γ«úñá,
  1735.          ¬«úñá τáßΓ∞ αѺπ½∞Γ¿απεΘÑú« »«½∩ ∩ó½∩ÑΓß∩ ó φΓ«⌐ ªÑ «í½áßΓ¿ »á¼∩-
  1736.          Γ¿ τáßΓ∞ε ¿ßσ«ñ¡«ú«). ÅÑαÑß佬¿ ß »ÑαѬαδΓ¿Ñ¼ ¬«ααÑ¬Γ¡« «íαáíáΓδ-
  1737.          óáεΓß∩ Σπ¡¬µ¿Ñ⌐ memcpy.
  1738.                 
  1739.                Åα¿¼Ñα:
  1740.             
  1741.                #include <memory.h>
  1742.                #include <dos.h>
  1743.                char far *src;
  1744.                char far *dest;
  1745.                .
  1746.                .
  1747.                .
  1748.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ »ÑαÑßδ½áεΓ 512
  1749.                    ** íá⌐Γ«ó ñá¡¡δσ ¿º src ó dest.   */
  1750.             
  1751.                movedata (FP_SEG (src), FPSEG(dest),
  1752.                           FP_OFF(dest), 512);
  1753.  
  1754.             
  1755.                _ MSIZE
  1756.              
  1757.                #include <malloc.h>       ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1758.                                          Σπ¡¬µ¿¿
  1759.                 
  1760.                unsigned_msize(ptr);
  1761.                char *ptr;                π¬áºáΓѽ∞ ¡á í½«¬ »á¼∩Γ¿
  1762.                 
  1763.                Ä»¿ßá¡¿Ñ.
  1764.                 
  1765.                öπ¡¬µ¿∩ _ msize ó«ºóαáΘáÑΓ αẼÑα í½«¬á »á¼∩Γ¿ (ó  íá⌐Γáσ),
  1766.          αáß»αÑñѽѡ¡«ú« »«ßαÑñßΓó«¼ ó맮ó«ó calloc, malloc ¿½¿ realloc.
  1767.                 
  1768.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1769.                 
  1770.                éѽ¿τ¿¡á ó íá⌐Γáσ ó«ºóαáΘáÑΓß∩ ¬á¬ íѺº¡á¬«ó«Ñ µÑ½«Ñ.
  1771.                æ¼. ΓᬪѠcalloc, _expand, malloc, realloc.
  1772.  
  1773.                                       - 167 -
  1774.          
  1775.          
  1776.         
  1777.                Åα¿¼Ñα:
  1778.                 
  1779.                #include <stdio.h>
  1780.                #include <malloc.h>
  1781.                main()
  1782.                {
  1783.                long *oldptr;
  1784.                unsigned int newsize=64000;
  1785.             
  1786.                oldptr=(long*)malloc(10000*sizeof(long));
  1787.                printf("Size of memory block pointed to by
  1788.                      oldptr=%u\n", _msize(oldptr));
  1789.             
  1790.                if (_expand(oldptr,newsize) != NULL)
  1791.                printf("expand was able to increase block to
  1792.                       %u\n", _msize(oldptr));
  1793.                else
  1794.                 printf("expand was able to increase block to
  1795.                        only %u\n", _msize(oldptr));
  1796.                }
  1797.  
  1798.               _NFREE
  1799.             
  1800.                #include <malloc.h>      ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1801.                                         Σπ¡¬µ¿¿
  1802.                void _nfree(ptr);
  1803.                char near *ptr;          π¬áºáΓѽ∞  ¡á  ºáσóáτÑ¡¡δ⌐ í½«¬
  1804.                                         »á¼∩Γ¿
  1805.             
  1806.                Ä»¿ßá¡¿Ñ.
  1807.             
  1808.                öπ¡¬µ¿∩ _nfree «ßó«í«ªñáÑΓ í½«¬ »á¼∩Γ¿. Çαúπ¼Ñ¡Γ ptr π¬áºδ-
  1809.          óáÑΓ ¡á αá¡ÑÑ ºáσóáτÑ¡¡δ⌐ í½«¬ »á¼∩Γ¿ »«ßαÑñßΓó«¼ _nmalloc.
  1810.                ù¿ß½«¼  «ßó«í«ªñÑ¡¡δσ íá⌐Γ«ó ∩ó½∩ÑΓß∩ τ¿ß½« íá⌐Γ«ó, «»αÑñÑ-
  1811.          ½Ñ¡¡δσ »α¿ ºáσóáΓÑ í½«¬á. Å«ß½Ñ ó맮óá «ßó«í«ñ¿óΦ¿Ñß∩ í½«¬¿  »α¿-
  1812.          ú«ñ¡δ ¬ αẼÑΘÑ¡¿ε.
  1813.             
  1814.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1815.       
  1816.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1817.                æ¼.  ΓᬪѠ_nmalloc, free, malloc.
  1818.                 
  1819.                çá¼Ñτá¡¿Ñ.  Å«»δΓ¬á  «ßó«í«ñ¿Γ∞  ¡ÑóÑα¡δ⌐ ptr (π¬áºáΓѽ∞ ¡Ñ
  1820.          ºáσóáΓδóáÑΓß∩ »«ßαÑñßΓó«¼ _nmalloc) ¼«ªÑΓ »α¿óÑßΓ¿ ¬ »«ß½ÑñπεΘѼπ
  1821.          ºáσóáΓπ ¿ óδºóáΓ∞ «Φ¿í¬π.
  1822.                 
  1823.                Åα¿¼Ñα:
  1824.       
  1825.                #include <malloc.h>
  1826.                #include <stdio.h>
  1827.       
  1828.                char near *alloc;
  1829.       
  1830.                /* ºáσóáΓδóáÑΓ 100 íá⌐Γ«ó ¿ ºáΓѼ «ßó«í«ªñáÑΓ ¿σ */
  1831.  
  1832.                                       - 168 -
  1833.          
  1834.          
  1835.       
  1836.                /* »α«óÑα∩ÑΓ π¬áºáΓѽ∞ ¡á »αáó¿½∞¡«ßΓ∞: */
  1837.       
  1838.                if ((alloc=_nmalloc(100))==NULL)
  1839.                printf("unable to allocate memory\n");
  1840.                else {
  1841.                 .
  1842.                 .
  1843.                 .
  1844.                /* «ßó«í«ªñáÑΓ »á¼∩Γ∞ ñ½∩ heap: */
  1845.             
  1846.                _nfree(alloc);
  1847.                    }
  1848.       
  1849.               _NMALLOC
  1850.       
  1851.                #include <malloc.h>       ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1852.                                          Σπ¡¬µ¿¿
  1853.       
  1854.                char near *_nmalloc(size);
  1855.                unsigned size;            ¬«½¿τÑßΓó« íá⌐Γ«ó ó ºáσóáτÑ¡¡«¼
  1856.                                          í½«¬Ñ
  1857.       
  1858.             
  1859.                Ä»¿ßá¡¿Ñ.
  1860.       
  1861.                öπ¡¬µ¿∩ _nmalloc ó¡πΓα¿ π¼á½τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ  ºáσ-
  1862.          óáΓδóáÑΓ í½«¬ »á¼∩Γ¿, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ¡Ñ ¼Ñ¡∞ΦÑ, τѼ ¿º size íá⌐-
  1863.          Γ«ó. (ü½«¬ ¼«ªÑΓ íδΓ∞ í«½∞ΦÑ, τѼ ¿º size íá⌐Γ«ó,¡« »α¿¡áñ½ÑªáΘ¿σ
  1864.          »α«ßΓαá¡ßΓóπ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ ñ½∩ óδαáó¡¿óá¡¿∩).
  1865.             
  1866.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1867.             
  1868.                öπ¡¬µ¿∩ _nmalloc ó«ºóαáΘáÑΓ near-π¬áºáΓѽ∞ ¡á char. é »á¼∩-
  1869.          Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úáαá¡Γ¿α«óá¡« óδ-
  1870.          αáó¡¿óá¡¿Ñ  ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ »«½πτ¿Γ∞ π¬á-
  1871.          ºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«íαẫóáΓѽ∞ Γ¿-
  1872.          »á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
  1873.                é«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ »α«ßΓαá¡ßΓó« ¡Ñ í佫  ºáσ-
  1874.          óáτÑ¡¡δ¼.
  1875.                æ¼. ΓᬪѠ_nrfee, _msize, malloc, realloc.
  1876.          
  1877.                Åα¿¼Ñα:
  1878.             
  1879.                #include <malloc.h>
  1880.                int *intarray;
  1881.                /* ºáσóáΓδóáÑΓ »á¼∩Γ∞ ñ½∩ 20 µÑ½δσ */
  1882.                intarray=(int*)_nmalloc(20*sizeof(int));
  1883.  
  1884.                _NMSIZE
  1885.             
  1886.                #include <malloc.h>       ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1887.                                          Σπ¡¬µ¿¿
  1888.                unsigned _nmsize(ptr);
  1889.                char near ptr;            π¬áºáΓѽ∞ ¡á í½«¬ »á¼∩Γ¿
  1890.  
  1891.                                       - 169 -
  1892.          
  1893.          
  1894.             
  1895.                Ä»¿ßá¡¿Ñ.
  1896.             
  1897.                öπ¡¬µ¿∩  _nmsize  ó«ºóαáΘáÑΓ  αẼÑα í½«¬á »á¼∩Γ¿ ó íá⌐Γáσ,
  1898.          ºáσóáτÑ¡¡«ú« »«ßαÑñßΓó«¼ _nmalloc.
  1899.             
  1900.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1901.             
  1902.                öπ¡¬µ¿∩ _nmsize ó«ºóαáΘáÑΓ αẼÑα ó íá⌐Γáσ, ¬á¬ íѺº¡á¬«ó«Ñ
  1903.          µÑ½«Ñ.
  1904.                æ¼. ΓᬪѠ _ffree,  _fmalloc,  _fmsize, malloc, _msize,
  1905.         _nfree, _nmalloc.
  1906.             
  1907.                Åα¿¼Ñα:
  1908.             
  1909.                #include <malloc.h>
  1910.            
  1911.                #include <stdio.h>
  1912.             
  1913.                main()
  1914.                  {
  1915.                 char near *stringarray;
  1916.             
  1917.                 stringarray=_nmalloc(200*sizeof(char));
  1918.                 if (stringarray != NULL)
  1919.                    printf("%u bytes allocated\n",
  1920.                           _nmsize(stringarray));
  1921.                 else
  1922.                    printf("Allocation request failed.\n");
  1923.                 }
  1924.          
  1925.                
  1926.                ONEXIT
  1927.             
  1928.                #include <stdlib.h>       ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1929.                                          Σπ¡¬µ¿¿
  1930.                onexit_t onexit(func);    Γ¿»  onexit_t,  «»αÑñѽѡ¡δ⌐  ó
  1931.                                          <stdlib.h>
  1932.                onexit_t func;
  1933.             
  1934.                Ä»¿ßá¡¿Ñ.
  1935.             
  1936.                öπ¡¬µ¿∩ onexit »ÑαÑñáÑΓ áñαÑß Σπ¡¬µ¿¿ (func), ¬«Γ«αá∩ íπñÑΓ
  1937.          óδ»«½¡Ñ¡á, Ñß½¿ »α«úαἼᠡ«α¼á½∞¡« ºáóÑαΦ¿Γß∩.  ôß»ÑΦ¡δÑ  ó맮óδ
  1938.          onexit  ß«ºñáεΓ  ¡áí«α Σπ¡¬µ¿⌐, óδ»«½¡∩Ѽδ⌐ »« »αáó¿½π ¼áúế¡á -
  1939.          "»«ß½Ññ¡¿⌐ ºáΦѽ, »Ñαóδ⌐ óδΦѽ". Åα¿  »«¼«Θ¿  onexit  ¼«úπΓ  íδΓ∞
  1940.          ß«ºñá¡δ  ¡áí«αδ  ¡Ñ  í«½ÑÑ   τѼ ¿º 32 Σπ¡¬µ¿⌐; onexit ó«ºóαáΘáÑΓ
  1941.          º¡áτÑ¡¿Ñ NULL, Ñß½¿ τ¿ß½« Σπ¡¬µ¿⌐ ó ¡áí«αÑ »αÑóδΦáÑΓ 32. öπ¡¬µ¿¿,
  1942.          »ÑαÑñáóáѼδÑ ¬ onexit, ¡Ñ ¼«úπΓ ¿¼ÑΓ∞ »áαá¼ÑΓα«ó.
  1943.             
  1944.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1945.             
  1946.                öπ¡¬µ¿∩ onexit ó ß½πτáÑ πß»Ñσá ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á Σπ¡-
  1947.          ¬µ¿ε  ¿ ó«ºóαáΘáÑΓ NULL, Ñß½¿ ¡Ñ «ßΓὫß∞ ¼ÑßΓá ñ½∩ σαá¡Ñ¡¿∩ π¬á-
  1948.          ºáΓѽ∩ ¡á Σπ¡¬µ¿ε.
  1949.  
  1950.                                       - 170 -
  1951.          
  1952.          
  1953.             æ¼.ΓᬪѠexit.
  1954.             
  1955.                Åα¿¼Ñα:
  1956.             
  1957.                #include <stdlib.h>
  1958.                main()
  1959.                {
  1960.                int fn1(), fn2(), fn3(), fn4();
  1961.                onexit(fn1);
  1962.                onexit(fn2);
  1963.                onexit(fn3);
  1964.                onexit(fn4);
  1965.                printf("This is executed first.\n");
  1966.                }
  1967.                int fn1()
  1968.                    {
  1969.                    printf("next.\n");
  1970.                    }
  1971.                int fn2()
  1972.                    {
  1973.                    printf("executed");
  1974.                    }
  1975.                int fn3()
  1976.                    {
  1977.                    printf("is");
  1978.                    }
  1979.                int fn4()
  1980.                    {
  1981.                    printf("This");
  1982.                    }
  1983.             
  1984.             
  1985.                ìá óδσ«ñÑ:
  1986.             
  1987.                This is executed first.
  1988.                This is executed next.
  1989.       
  1990.             
  1991.                OPEN
  1992.             
  1993.                #include <fcntl.h>
  1994.                #include <sys\types.h>
  1995.                #include <sys\stat.h>
  1996.                #include <io.h>        ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1997.                                       Σπ¡¬µ¿⌐.
  1998.                int open(pathname, oflag [[, pmode]]);
  1999.                char *pathname;        path-¿¼∩ Σá⌐½á
  2000.                int oflag;             ñ«ßΓπ»¡δ⌐ Γ¿» «»Ñαᵿ⌐
  2001.                int pmode;             αáºαÑΦÑ¡¡δ⌐ Γ¿» ñ«ßΓπ»á.
  2002.             
  2003.                Ä»¿ßá¡¿Ñ.
  2004.                                                                   
  2005.                öπ¡¬µ¿∩ open «Γ¬αδóáÑΓ Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »«  path-¿¼Ñ¡¿, ¿
  2006.          »«ñú«Γáó½¿óáÑΓ  Ñú« ¬ »«ß½ÑñπεΘѼπ τΓÑ¡¿ε ¿½¿ ºá»¿ß¿, τΓ« «»αÑñÑ-
  2007.          ½∩ÑΓß∩ »«ßαÑñßΓó«¼ oflag.
  2008.  
  2009.                                       - 171 -
  2010.          
  2011.          
  2012.                Çαúπ¼Ñ¡Γ oflag ∩ó½∩ÑΓß∩ µÑ½δ¼ óδαáªÑ¡¿Ñ¼, ß«ßΓ«∩Θ¿¼ ¿º ¬«¼-
  2013.          í¿¡áµ¿¿ «ñ¡«⌐  ¿½¿  í«½ÑÑ  ¼á¡¿ΣÑßΓ¡δσ  ¬«¡ßΓá¡Γ,  «íΩ∩ó½Ñ¡¡δσ  ó
  2014.          <fcntl.h>. àß½¿ ºáñá¡á í«½∞ΦÑ  τѼ «ñ¡á ¬«¡ßΓá¡Γá, Γ«úñá «¡¿ «íΩ-
  2015.          Ññ¿¡∩εΓß∩ »α¿ »«¼«Θ¿ ½«ú¿τÑ߬«ú« «»ÑαáΓ«αá êïê (:).
  2016.             
  2017.             OFLAG                          çìÇùàìêà
  2018.                             
  2019.             O_APPEND        ô¬áºáΓѽ∞  ¡á Σá⌐½  »ÑαѼÑΘÑ¡  ó ¬«¡Ñµ
  2020.                             Σá⌐½á »ÑαÑñ ¬áªñ«⌐ «»ÑαᵿÑ⌐ ºá»¿ß¿.
  2021.                             
  2022.             O_CREAT         ì«óδ⌐ Σá⌐½ ß«ºñá¡ ¿ «Γ¬αδΓ ñ½∩ ºá»¿ß¿;
  2023.                             φΓ«  ¡Ñ  φΣΣÑ¬Γ¿ó¡«,  Ñß½¿  ßπΘÑßΓóπÑΓ
  2024.                             Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »« path-¿¼Ñ¡¿.
  2025.                             
  2026.             O_EXCL          é«ºóαáΘáÑΓß∩  º¡áτÑ¡¿Ñ   «Φ¿í¬¿,  Ñß½¿
  2027.                             ßπΘÑßΓóπÑΓ Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »« path-
  2028.                             ¿¼Ñ¡¿.  Åα¿¼Ñ¡∩ÑΓß∩  Γ«½∞¬«  ó¼ÑßΓÑ  ß
  2029.                             O_CREATE.
  2030.  
  2031.             O_RDONLY        öá⌐½  «Γ¬αδΓ  Γ«½∞¬«  ñ½∩ τΓÑ¡¿∩; Ñß½¿
  2032.                             ºáñáÑΓß∩ φëàӽáú, ¼«ªÑΓ íδΓ∞  óδíαá¡
  2033.                             ½¿í« Σ½áú O_RDWR, ½¿í« O_WRONLY.
  2034.                             
  2035.             O_RDWR          öá⌐½   «Γ¬αδΓ  «ñ¡«óαѼѡ¡« ñ½∩ τΓÑ¡¿∩
  2036.                             ¿ ºá»¿ß¿;  Ñß½¿  ºáñáÑΓß∩  φëà Σ½áú,
  2037.                             ¼«ªÑΓ íδΓ∞ óδíαá¡  ½¿í« Σ½áú O_RDONLY,
  2038.                             ½¿í« O_WRONLY.
  2039.                             
  2040.             O_TRUNC         æπΘÑßΓóπεΘ¿⌐ Σá⌐½  «Γ¬αδΓ ¿  πßÑτÑ¡  ¬
  2041.                             ñ½¿¡Ñ  0;   φëà Σá⌐½  ñ«½ªÑ¡   ¿¼ÑΓ∞
  2042.                             αáºαÑΦÑ¡¿Ñ ¡á ºá»¿ß∞. æ«ñÑন¼«Ñ Σá⌐½á
  2043.                             π¡¿τΓ«ªáÑΓß∩.
  2044.                             
  2045.             O_WRONLY        öá⌐½  «Γ¬αδΓ  Γ«½∞¬«  ñ½∩ τΓÑ¡¿∩; Ñß½¿
  2046.                             ºáñá¡ φëà Σ½áú,  ñ«½ªÑ¡  íδΓ∞  ºáñá¡
  2047.                             ΓᬪѠ½¿í« Σ½áú O_RDONLY, ½¿í« ORDWR.
  2048.                             
  2049.             O_BINARY        öá⌐½  «Γ¬αδΓ  ó  ñó«¿τ¡«¼ (¡Ñ Γαá¡ß½¿-
  2050.                             α«óá¡¡«¼) αѪ¿¼Ñ.  (æ¼. «»¿ßá¡¿Ñ  ñó«-
  2051.                             ¿τ¡«ú« αѪ¿¼á π Σπ¡¬µ¿¿ fopen).
  2052.                             
  2053.             O_TEXT          öá⌐½  «Γ¬αδΓ  ó  ΓѬßΓ«ó«¼   (Γαá¡ß½¿-
  2054.                             απεΘѼ) αѪ¿¼Ñ. (æ¼. «»¿ßá¡¿Ñ  ΓѬßΓ«-
  2055.                             ó«ú« αѪ¿¼á π Σπ¡¬µ¿¿ fopen).
  2056.                             
  2057.                çá¼Ñτá¡¿Ñ!  O_TRUNC »«½¡«ßΓ∞ε π¡¿τΓ«ªáÑΓ ß«ñÑন¼«Ñ ßπΘÑßΓ-
  2058.          óπεΘÑú« Σá⌐½á; »«φΓ«¼π ¡πª¡« ó¡¿¼áΓѽ∞¡« ¿ß»«½∞º«óáΓ∞  φΓπ  ¬«¡ß-
  2059.          Γá¡Γπ.
  2060.                Çαúπ¼Ñ¡Γ  pmode  ΓαÑíπÑΓß∩  Γ«½∞¬«  Γ«úñá, ¬«úñá «»αÑñѽѡá
  2061.          ¬«¡ßΓá¡Γá O_CREAT. àß½¿ Σá⌐½ ßπΘÑßΓóπÑΓ,  pmode  ¿ú¡«α¿απÑΓß∩.  é
  2062.          »α«Γ¿ó¡«¼  ß½πτáÑ   pmode «»αÑñѽ∩ÑΓ αáºαÑΦÑ¡¡δÑ Γ¿»δ ñ«ßΓπ»á ñ½∩
  2063.          Σá⌐½á, ¬«Γ«αδÑ πßΓá¡áó½¿óáεΓß∩ ó« óαѼ∩ »Ñαó«ú«  ºá¬αδΓ¿∩  ¡«ó«ú«
  2064.          Σá⌐½á.
  2065.                Pmode  - µÑ½«Ñ óδαáªÑ¡¿Ñ, ß«ñÑαªáΘÑÑ «ñ¡π ¿½¿ «íÑ ¼á¡¿ΣÑßΓ-
  2066.          ¡δÑ ¬«¡ßΓá¡Γδ S_IREAD, S_IWRITE, «íΩ∩ó½Ñ¡¡δÑ ó <sys\stat.h>. è«úñá
  2067.  
  2068.                                       - 172 -
  2069.          
  2070.          
  2071.          ºáñá¡δ  «íÑ ¬«¡ßΓá¡Γδ, «¡¿ «íΩÑñ¿¡∩εΓß∩ ½«ú¿τÑ߬¿¼ «»ÑαáΓ«α«¼ êïê
  2072.          (:). ç¡áτÑ¡¿Ñ áαúπ¼Ñ¡Γá pmode »α¿ó«ñ¿Γß∩ ¡¿ªÑ.
  2073.             
  2074.             èÄìæÆÇìÆÇ            àà æî¢æïÄéÄà çìÇùàìêà
  2075.             
  2076.             S_IWRITE             αáºαÑΦáÑΓ ºá»¿ß∞.
  2077.             
  2078.             S_IREAD              αáºαÑΦáÑΓ τΓÑ¡¿Ñ.
  2079.  
  2080.             S_IREAD|S_IWRITE     αáºαÑΦáεΓ τΓÑ¡¿Ñ ¿ ºá»¿ß∞.
  2081.  
  2082.                àß½¿ ºá»¿ß∞ ¡Ñ αáºαÑΦÑ¡á, Σá⌐½ »αÑñ¡áº¡áτÑ¡ Γ«½∞¬« ñ½∩ τΓÑ-
  2083.          ¡¿∩. é MS DOS óßÑ Σá⌐½δ «Γ¬αδΓδ ñ½∩ τΓÑ¡¿∩; ñ½∩ ¡¿σ  ¡Ñ  ó«º¼«ª¡«
  2084.          ºáñáΓ∞  αáºαÑΦÑ¡¿Ñ  Γ«½∞¬«  ¡á ºá»¿ß∞. Å«φΓ«¼π, ¼«ñѽ¿ S_IWRITE ¿
  2085.          S_IREAD: S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
  2086.                öπ¡¬µ¿∩ open »ÑαÑñ πßΓá¡«ó¬«⌐ αáºαÑΦÑ¡¡«ú« ñ«ßΓπ»á  »α¿¬½á-
  2087.          ñδóáÑΓ ΓѬπΘπε ¼á߬π Σá⌐½á ¬ pmode. (Å«ñα«í¡« «í φΓ«¼ «»¿ßδóáÑΓß∩
  2088.          π Σπ¡¬µ¿¿ umask).
  2089.             
  2090.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  2091.             
  2092.                ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ handle ¡á ß«ºñá¡¡δ⌐ Σá⌐½. é«ºóαáΘáÑ-
  2093.          ¼«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á «Φ¿í¬π; errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡«
  2094.          ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐.
  2095.             
  2096.             çìÇùàìêà                àâÄ æî¢æï
  2097.       
  2098.             EACCES         çáñá¡¡«Ñ path-¿¼∩ ∩ó½∩ÑΓß∩ ñ¿αÑ¬Γ«α¿Ñ¼;
  2099.                            ¿½¿ ßñѽá¡á »«»δΓ¬á  ºá»¿ßáΓ∞  ó  Σá⌐½,
  2100.                            «Γ¬αδΓδ⌐   Γ«½∞¬«   ñ½∩   τΓÑ¡¿∩,   ¿½¿
  2101.                            ó«º¡¿¬½«  sharing-¡áαπΦÑ¡¿Ñ.  (Sharing-
  2102.                            αѪ¿¼ Σá⌐½á ñ½∩ «»Ñαᵿ⌐ ¡Ñ ñ«»π߬áÑΓß∩.
  2103.                            éÑαß¿¿ MS DOS 3.0 ¿ ßΓáαΦÑ).
  2104.             
  2105.             EEXIST         ö½áú¿ O_CREAT ¿ O_EXCL  «»αÑñѽѡδ,  ¡«
  2106.                            ¡áºóá¡¡δ⌐ Σá⌐½ óßÑúñá ßπΘÑßΓóπÑΓ.
  2107.                            
  2108.             EMFILE         äαπú¿Ñ handle-αδ Σá⌐½á ¡Ñ ñ«ßΓπ»¡δ, Γ.¬.
  2109.                            ¼¡«ú« «Γ¬αδΓδσ Σá⌐½«ó.
  2110.                           
  2111.             ENOENT         öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  2112.       
  2113.                æ¼.  ΓᬪѠ access,  chmod, close, creat, dup, dup2, fopen,
  2114.          sopen, umask.
  2115.             
  2116.             Åα¿¼Ñα:
  2117.             
  2118.             #include <fcntl.h>
  2119.             #include <sys\types.h>
  2120.             #include <sys\stat.h>
  2121.             #include <io.h>
  2122.             #include <stdlib.h>
  2123.             main ()
  2124.              {
  2125.               int fh1, fh2;
  2126.  
  2127.                                       - 173 -
  2128.          
  2129.          
  2130.               fh1 = open("data1", O_RDONLY);
  2131.               if (fh1 == -1)
  2132.                   perror("open failed on input file");
  2133.               fh2 = open("data2", O_WRONLY:O_TRUNC:O_CREAT,
  2134.                                   S_IREAD:S_IWRITE);
  2135.               if (fh2 == -1)
  2136.                   perror("open failed on output file");
  2137.               .
  2138.               .
  2139.               .
  2140.              }.
  2141.               fh1 = open("data1", O_RDONLY);
  2142.               if (fh1 == -1)
  2143.                   perror("open failed on input file");.
  2144.       
  2145.       
  2146.             
  2147.                OUTP
  2148.             
  2149.                #include <conio.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  2150.                                       Σπ¡¬µ¿¿
  2151.                int outp(port, value);
  2152.                unsigned port;         ¡«¼Ñα »«αΓá
  2153.                int value;             óδó«ñ¿¼«Ñ º¡áτÑ¡¿Ñ
  2154.             
  2155.                Ä»¿ßá¡¿Ñ.
  2156.             
  2157.                öπ¡¬µ¿∩ outp ºá»¿ßδóáÑΓ º¡áτÑ¡¿Ñ value ó óδσ«ñ¡«⌐ »«αΓ, «»-
  2158.          αÑñѽѡ¡δ⌐ »« port. Çαúπ¼Ñ¡Γ port ¼«ªÑΓ  íδΓ∞  ½εíδ¼  íѺº¡á¬«óδ¼
  2159.          µÑ½δ¼  ó  »αÑñѽáσ  «Γ 0 ñ« 65535, value ¼«ªÑΓ íδΓ∞ ½εíδ¼ µÑ½δ¼ ó
  2160.          »αÑñѽáσ «Γ 0 ñ« 255.
  2161.                æ¼.ΓᬪѠinp.
  2162.             
  2163.                Åα¿¼Ñα:
  2164.             
  2165.                #include <conio.h>
  2166.                int port, byte_val;
  2167.                .
  2168.                .
  2169.                .
  2170.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδó«ñ¿Γ Γ«Γ íá⌐Γ ¿º »«αΓá, ¡á ¬«Γ«αδ⌐
  2171.          πßΓá¡«ó½Ñ¡ port. */
  2172.                outp (port, byte_val);.
  2173.             
  2174.  
  2175.