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

  1.                                       - 54 -
  2.                
  3.             
  4.                 
  5.                     ùÇæÆ£ 2.  ÄÅêæÇìêà  öôìèûêë  üêüïêÄÆàèê  æê
  6.          
  7.                
  8.                ABORT
  9.             
  10.             #include <process.h>  ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  11.                                   Σπ¡¬µ¿¿
  12.             #include <stdlib.h>   ¿ß»«½∞ºπÑΓ  ½¿í«  <process.h>,
  13.                                   ½¿í« <stdlib.h>
  14.             void abort();
  15.          
  16.                Ä»¿ßá¡¿Ñ.
  17.                
  18.                öπ¡¬µ¿∩  abort  αáß»ÑτáΓδóáÑΓ  ß««íΘÑ¡¿Ñ  "Abnormal program
  19.          termination" (áóáα¿⌐¡«Ñ (¡Ñ»αÑñó¿ñÑ¡¡«Ñ) ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ)  ó
  20.          stderr,  ºáΓѼ «¬á¡τ¿óáÑΓ óδºóá¡¡δ⌐ »α«µÑßß, ó«ºóαáΘá∩ π»αáó½Ñ¡¿Ñ
  21.          »α«µÑßßπ, ¬«Γ«αδ⌐ ¿¡¿µ¿¿α«óá½ óδºóá¡¡δ⌐ »α«µÑßß («íδτ¡«  «»Ñαᵿ-
  22.          «¡¡«⌐ ß¿ßΓѼÑ). öπ¡¬µ¿∩ abort ¡Ñ «í¡«ó½∩ÑΓ íπΣÑαδ »«Γ«¬«ó.
  23.             
  24.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  25.             
  26.                é«ºóαáΘáÑΓß∩ ßΓáΓπß óδσ«ñá 3 ¬ parent-»α«µÑßßπ  ½¿í« ¬ «»Ñ-
  27.          αᵿ«¡¡«⌐ ß¿ßΓѼÑ.
  28.                æ¼.ΓᬪѠ execl,  execle,  execip,  execlpe, execv, execve,
  29.          execvp, execvpe, exit, _exit, signal, spawnl,  spawnle,  spawnlp,
  30.          spawnlpe, spawnv, spawnve, spawnvp, spawnvpe.
  31.             
  32.                Åα¿¼Ñα:
  33.             
  34.             #include <stdio.h>
  35.             
  36.             main(args, argv)
  37.             int argc;
  38.             char *argv[];
  39.             {
  40.             FILE *stream;
  41.             if ((stream=fopen(argv[argc-1],"r"))==NULL) {
  42.                frpintf(stderr,
  43.                        "%s couldn't open file %s\n", argv[0],
  44.                        argv[argc-1]);
  45.                abort();
  46.                }
  47.             
  48.                /*  çá¼Ñτá¡¿Ñ.  ê¼∩ »α«úαá¼¼δ σαá¡¿Γß∩ ó argv[0] Γ«½∞¬« ñ½∩
  49.          óÑαß¿¿ MS DOS 3.0 ¿ ßΓáαΦ¿σ; ó αá¡¡¿σ  óÑαß¿∩σ  argv[0]  ß«ñÑনΓ
  50.          ßΓ᫬π "æ". */
  51.             
  52.                }
  53.       
  54.                ÄíαáºÑµ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
  55.             
  56.                update employ.dat
  57.             
  58.                ìá óδσ«ñÑ:
  59.  
  60.                                       - 55 -
  61.          
  62.          
  63.             
  64.             C:\BIN\UPDATE.EXE  couldn't open file employ.dat.
  65.             
  66.                Abnormal program termination.
  67.                (ìÑ»αÑñó¿ñÑ¡¡«Ñ ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ).
  68.                 
  69.                ABS
  70.             
  71.             #include <stdlib.h>          ΓαÑíπÑΓß∩   Γ«½∞¬«    ñ½∩
  72.                                          «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  73.             int abs(n);
  74.             int n;                       µÑ½«Ñ º¡áτÑ¡¿Ñ
  75.             
  76.                Ä»¿ßá¡¿Ñ.
  77.             
  78.                öπ¡¬µ¿∩  abs  ó«ºóαáΘáÑΓ  áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« µÑ½«ú«
  79.          áαúπ¼Ñ¡Γá n.
  80.             
  81.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  82.             
  83.                öπ¡¬µ¿∩ abs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú«  áαúπ¼Ñ¡-
  84.          Γá. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  85.                æ¼. ΓᬪѠcabs, fabs, labs.
  86.             
  87.                Åα¿¼Ñα:
  88.             
  89.             #include <stdlib.h>
  90.             
  91.             int x = -4, y;
  92.             
  93.             y = abs(x);
  94.             printf("%d\t%d\n", x, y);.
  95.             
  96.                ìá óδσ«ñÑ:
  97.             
  98.             -4       4.
  99.  
  100.       
  101.                ACCESS
  102.             
  103.             #include <io.h>          ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  104.                                      Σπ¡¬µ¿¿
  105.             
  106.             int access(pathname, mode);
  107.             char *pathname;          path-¿¼∩ Σá⌐½á ¿½¿ ñ¿αÑ¬Γ«α¿∩
  108.             int mode;                αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ»
  109.                 
  110.                Ä»¿ßá¡¿Ñ.
  111.             
  112.                ä½∩  Σá⌐½«ó  Σπ¡¬µ¿∩  access «»αÑñѽ∩ÑΓ, ßπΘÑßΓóπÑΓ ¿½¿ ¡ÑΓ
  113.          «»αÑñѽѡ¡δ⌐ Σá⌐½, ¼«ªÑΓ ½¿ «¡ íδΓ∞ ñ«ßΓπ»Ñ¡  ó  ºáñá¡¡«¼  αѪ¿¼Ñ
  114.          mode.  é«º¼«ª¡δÑ  º¡áτÑ¡¿∩ mode ¿ ¿σ «í«º¡áτÑ¡¿∩ ó ó맮óáσ access
  115.          »α¿óÑñÑ¡δ ¡¿ªÑ.
  116.             
  117.  
  118.                                       - 56 -
  119.          
  120.          
  121.             çìÇùàìêà             æî¢æï çìÇùàìêƒ
  122.                            
  123.                 06         Åα«óÑα¬á   ¡á  ñ«ßΓπ»  »«  τΓÑ¡¿ε   ¿
  124.                            ºá»¿ß¿
  125.                            
  126.                 04         Åα«óÑα¬á   ¡á  ñ«ßΓπ»  »«  τΓÑ¡¿∩
  127.                            
  128.                 02         Åα«óÑα¬á   ¡á  ñ«ßΓπ»  »«  ºá»¿ß¿
  129.                            
  130.                 00         Åα«óÑα¬á   Γ«½∞¬« ¡á ßπΘÑßΓó«óá¡¿Ñ
  131.  
  132.             
  133.                é MS DOS óßÑ ßπΘÑßΓóπεΘ¿Ñ Σá⌐½δ ¿¼ÑεΓ ñ«ßΓπ» »« τΓÑ¡¿ε, »«-
  134.          φΓ«¼π αѪ¿¼δ 00 ¿ 04 óδαáíáΓδóáεΓ «ñ¿¡ ¿ Γ«Γ ªÑ αѺπ½∞ΓáΓ. Ç¡á½«-
  135.          ú¿τ¡«, αѪ¿¼δ 06 ¿ 02 ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿, »«ß¬«½∞¬π ó MS DOS
  136.          ñ«ßΓπ» »« ºá»¿ß¿ »αÑñ»«½áúáÑΓ ñ«ßΓπ» »« τΓÑ¡¿ε.
  137.                ä½∩ ñ¿αÑ¬Γ«α¿Ñó access «»αÑñѽ∩ÑΓ, ßπΘÑßΓóπεΓ ¿½¿  ¡ÑΓ  ºá-
  138.          ñá¡¡δÑ  ñ¿αÑ¬Γ«α¿¿;  »«ñ  π»αáó½Ñ¡¿Ñ¼ MS DOS óßÑ ñ¿αÑ¬Γ«α¿¿ ¿¼ÑεΓ
  139.          ñ«ßΓπ» »« τΓÑ¡¿ε ¿ ºá»¿ß¿.
  140.             
  141.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  142.             
  143.                öπ¡¬µ¿∩ access ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ Σá⌐½  ¿¼ÑÑΓ  ºá-
  144.          ñá¡¡δ⌐  αѪ¿¼  mode.  é«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «
  145.          Γ«¼, τΓ« ¡áºóá¡¡δ⌐ Σá⌐½ ¡Ñ ßπΘÑßΓóπÑΓ ¿½¿ ¡Ññ«ßΓπ»Ñ¡  ó  ºáñá¡¡«¼
  146.          mode, ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  147.             
  148.            çìÇùàìêà                  æî¢æï çìÇùàìêƒ
  149.                            
  150.             EACCES               ä«ßΓπ»  ºá»αÑΘÑ¡; πßΓá¡«ó½Ñ¡¡δ⌐  ßΓáΓπß
  151.                                  ñ½∩  Σá⌐½á  ¡Ñ ñ«»π߬áÑΓ ºáñá¡¡«ú«  ñ«-
  152.                                  ßΓπ»á
  153.                            
  154.             ENOENT               öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«
  155.  
  156.             
  157.                æ¼.ΓᬪѠchmod, fstat, open, stat.
  158.             
  159.                Åα¿¼Ñα:
  160.             
  161.             #include <io.h>
  162.             #include <fcntl.h>
  163.             
  164.             int fh;
  165.             .
  166.             .
  167.             .
  168.             /* »α«óÑα¬á ñ«ßΓπ»á »« ºá»¿ß¿ */
  169.             if ((access("data",2))==-1 {
  170.                    perror("data file not writable");
  171.                    exit(1);
  172.                    }
  173.                 
  174.             else
  175.                    fh=open("data", O_WRONLY);
  176.             
  177.  
  178.                                       - 57 -
  179.          
  180.          
  181.       
  182.                ACOS
  183.                               
  184.             #include <math.h>
  185.             
  186.             double acos(x);
  187.             double x;
  188.             
  189.                Ä»¿ßá¡¿Ñ.
  190.             
  191.                öπ¡¬µ¿∩ acos ó«ºóαaΘaÑΓ aᬬ«ß¿¡πß x ó ¿¡ΓÑαóa½Ñ «Γ 0 ñ« n.
  192.          ç¡aτÑ¡¿Ñ x ñ«½ª¡« íδΓ∞ ¼Ñªñπ -1 ¿ 1.
  193.             
  194.                é«ºóαaΘaѼ«Ñ º¡aτÑ¡¿Ñ.
  195.             
  196.                öπ¡¬µ¿∩ acos ó«ºóαaΘaÑΓ αѺπ½∞ΓaΓ aᬬ«ß¿¡πßa. àß½¿ x ¼Ñ¡∞-
  197.          ΦÑ -1 ¿½¿ í«½∞ΦÑ 1, acos πßΓa¡aó½¿óaÑΓ errno ó EDOM, »ÑτaΓaÑΓ ß«-
  198.          «íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαaΘaÑΓ 0.
  199.                Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞  ¼«ñ¿Σ¿µ¿α«óa¡a  »α¿  ¿º¼Ñ¡Ñ¡¿¿
  200.          »α«µÑñπαδ matherr.
  201.                æ¼.Γa¬ªÑ asin, atan, atan2, cos, matherr, sin, tan.
  202.             
  203.                Åα¿¼Ñα:
  204.             
  205.                é ß½ÑñπεΘѼ »α¿¼ÑαÑ »α«úαa¼¼a óδñaÑΓ »«ñ߬aº¬¿ ñ½∩ óó«ña ñ«
  206.          ΓÑσ »«α, »«¬a óóÑñÑ¡¡«Ñ º¡aτÑ¡¿Ñ ¡Ñ íπñÑΓ ó ¿¡ΓÑαóa½Ñ «Γ -1 ñ« 1.
  207.             
  208.             #include <math.h>
  209.             
  210.             int errno;
  211.             
  212.             main()
  213.                 {
  214.                 float x,y;
  215.             
  216.                 for (errno=EDOM;errno==EDOM;y=acos(x)) {
  217.                     printf("Cosine=");
  218.                     scanf("%f",&x);
  219.                     errno = 0;
  220.                     }
  221.                 printf("Arc cosine of %f = %f\n",x,y);
  222.                 }
  223.             
  224.             ÄíαaºÑµ óδó«ña:
  225.             
  226.             Cosine = 3
  227.             acos: DOMAIN error
  228.             Cosine = -1.0
  229.             Arc cosine of -1.000000 = 3.141593
  230.             
  231.       
  232.                ALLOCA
  233.             
  234.             #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  235.                                    Σπ¡¬µ¿¿
  236.  
  237.                                       - 58 -
  238.          
  239.          
  240.             
  241.             char *alloca(size);
  242.             unsigned size;         ºáσóáτÑ¡¡δÑ íá⌐Γδ ¿º ßΓѬá
  243.             
  244.                Ä»¿ßá¡¿Ñ.
  245.             
  246.                Åα«µÑñπαá alloca ºáσóáΓδóáÑΓ íá⌐Γδ size ¿º ßΓѬᠻα«úαá¼¼δ.
  247.          çáσóáτÑ¡¡«Ñ  »α«ßΓαá¡ßΓó«  áóΓ«¼áΓ¿τÑ߬¿ «ßó«í«ªñáÑΓß∩ »α¿ óδσ«ñÑ
  248.          ¿º Σπ¡¬µ¿¿, óδºóáóΦÑ⌐ alloca.
  249.             
  250.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  251.             
  252.                Åα«µÑñπαá alloca ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ char  ¡á  ºáσóáτÑ¡¡«Ñ
  253.          »α«ßΓαá¡ßΓó«.
  254.                é  »á¼∩Γ¿,  ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
  255.          αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá.  ùΓ«íδ
  256.          »«½πτ¿Γ∞  π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«í-
  257.          αẫóáΓѽ∞ Γ¿»á  ó«ºóαáΘáѼ«ú«  º¡áτÑ¡¿∩.  é«ºóαáΘáÑΓß∩  º¡áτÑ¡¿Ñ
  258.          NULL, Ñß½¿ »α«ßΓαá¡ßΓó« ¡Ñ í佫 ºáσóáτÑ¡«.
  259.                æ¼.ΓᬪѠcalloc, malloc, realloc.
  260.             
  261.                ÅαÑñπ»αѪñÑ¡¿Ñ.  ç¡áτÑ¡¿Ñ π¬áºáΓѽ∩, ó«ºóαáΘáѼ«ú« »α«µÑñπ-
  262.          α«⌐ alloca, ¡Ñ ¼«ªÑΓ íδΓ∞ áαúπ¼Ñ¡Γ«¼ ñ½∩ free. Æá¬ ¬á¬ alloca «í-
  263.          αáíáΓδóáÑΓ ßΓѬ, «¡á ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ Γ«½∞¬« ó »α«ßΓδσ  «»Ñ-
  264.          αáΓ«αáσ  óδñѽѡ¿∩  ¿ ¡Ñ ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ ó óδαáªÑ¡¿∩σ-áαúπ-
  265.          ¼Ñ¡Γáσ Σπ¡¬µ¿⌐.
  266.             
  267.                Åα¿¼Ñα:
  268.                       
  269.             #include <malloc.h>
  270.             int *intarray;
  271.             
  272.             /* ºáσóáΓδóáÑΓ »á¼∩Γ∞ ó ßΓѬѠñ½∩ 10 µÑ½δσ */
  273.             
  274.             intarray=(int*)alloca(10*sizeof(int));
  275.  
  276.       
  277.                ASCTIME
  278.             
  279.             #include <time.h>
  280.             
  281.             char *asctime(time);
  282.             struct tm *time;       π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ,
  283.                                    «íΩ∩ó½Ñ¡¡πε ó <time.h>
  284.             
  285.                Ä»¿ßá¡¿Ñ.
  286.       
  287.                öπ¡¬µ¿∩  asctime »αÑ«íαáºπÑΓ óαѼ∩, σαá¡¿¼«Ñ ¬á¬ ßΓαπ¬Γπαá,
  288.          ó ß¿¼ó«½∞¡πε ßΓ᫬π. ç¡áτÑ¡¿Ñ time «íδτ¡«  »«½πτáÑΓß∩  ¿º  ó맮óá
  289.          gmtime  ¿½¿  localtime, ¬«Γ«αδÑ ó«ºóαáΘáεΓ π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ
  290.          tm, «íΩ∩ó½Ñ¡¡πε ó <time.h> (c¼. gmtime ñ½∩ «»¿ßá¡¿∩ »«½Ñ⌐  ßΓαπ¬-
  291.          Γπαδ  tm).  ÉѺπ½∞Γ¿απεΘá∩ ßΓ᫬á, óδαáí«Γá¡¡á∩ asctime, ß«ñÑনΓ
  292.          26 ß¿¼ó«½«ó ¿ ¿¼ÑÑΓ Σ«α¼π, »α¿óÑñÑ¡¡πε ¡¿ªÑ ó »α¿¼ÑαÑ:
  293.                 
  294.                Mon Jan 02 02:03:55 1980\n\0
  295.  
  296.                                       - 59 -
  297.          
  298.          
  299.                 
  300.                êß»«½∞ºπÑΓß∩ 24 τáßá. éßÑ  »«½∩  ¿¼ÑεΓ  »«ßΓ«∩¡¡πε  Φ¿α¿¡π.
  301.          æ¿¼ó«½  ¡«ó«⌐ ßΓ᫬¿ ('\n') ¿ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0') ºá¡¿¼áεΓ  ñóÑ
  302.          »«ß½Ññ¡¿Ñ »«º¿µ¿¿ ó ßΓ᫬Ñ.
  303.             
  304.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  305.             
  306.                öπ¡¬µ¿∩ asctime ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á  ß¿¼ó«½∞¡πε  ßΓ᫬π
  307.          αѺπ½∞ΓáΓá. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  308.                æ¼.ΓᬪѠctime, ftime, gmtime, localtime, time, tzset.
  309.             
  310.                çá¼Ñτá¡¿Ñ. öπ¡¬µ¿¿ asctime ¿ ctime ¿ß»«½∞ºπεΓ «ñ¿¡ ¿ Γ«Γ ªÑ
  311.          ßΓáΓ¿ßΓ¿τÑ߬¿ ºáσóáτÑ¡¡δ⌐ íπΣÑα ñ½∩ σαá¡Ñ¡¿∩ ó ¡Ñ¼ ßΓ᫬¿ αѺπ½∞-
  312.          ΓáΓá. èáªñδ⌐ ó맮ó «ñ¡«⌐ ¿º φΓ¿σ  »α«µÑñπα  π¡¿τΓ«ªáÑΓ  αѺπ½∞ΓáΓ
  313.          »αÑñδñπΘÑú« ó맮óá.
  314.             
  315.                Åα¿¼Ñα:
  316.             
  317.             #include <time.h>
  318.             #include <stdio.h>
  319.             
  320.             struct tm *newtime;
  321.             long ltime;
  322.             .
  323.             .
  324.             .
  325.             time(<ime);  /*óº∩Γ∞ óαѼ∩ ó ßѬπ¡ñáσ*/
  326.             newtime=localtime(<ime); /*»αÑ«íαẫóáΓ∞ ¬ ßΓαπ¬ΓπαÑ
  327.                                         tm  ¿  ¡á»ÑτáΓáΓ∞  ¼ÑßΓ¡«Ñ
  328.                                         óαѼ∩ ó ó¿ñÑ ßΓ᫬¿*/
  329.             printf("the current date and time are %s\n",
  330.                  asctime(newtime));
  331.             
  332.       
  333.                ASIN
  334.            
  335.             #include <math.h>
  336.             
  337.             double asin(x);
  338.             double x;
  339.             
  340.                Ä»¿ßa¡¿Ñ.
  341.             
  342.                öπ¡¬µ¿∩  asin óδτ¿ß½∩ÑΓ áα¬ß¿¡πß x ó ¿¡ΓÑαóá½Ñ -n/2 ñ« n/2.
  343.          ç¡áτÑ¡¿Ñ x ñ«½ª¡« íδΓ∞ ¼Ñªñπ -1 ¿ 1.
  344.             
  345.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  346.             
  347.                öπ¡¬µ¿∩ asin ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ áα¬ß¿¡πßá. àß½¿ x  ¼Ñ¡∞ΦÑ
  348.          -1  ¿½¿ í«½∞ΦÑ 1, asin πßΓá¡áó½¿óáÑΓ errno ó EDOM, »ÑτáΓáÑΓ ß««í-
  349.          ΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαáΘáÑΓ 0.
  350.                Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞  ¼«ñ¿Σ¿µ¿α«óa¡a  »α¿  ¿º¼Ñ¡Ñ¡¿¿
  351.          »α«µÑñπαδ matherr.
  352.                æ¼.Γa¬ªÑ acos, atan, atan2, cos, matherr, sin, tan.
  353.             
  354.  
  355.                                       - 60 -
  356.          
  357.          
  358.                Åα¿¼Ñα:
  359.             
  360.             #include <math.h>
  361.             
  362.             int errno;
  363.             
  364.             main()
  365.             
  366.                {
  367.                float x,y;
  368.                for (errno=EDOM; errno==EDOM; y=asin(x)) {
  369.                     printf("Sine=");
  370.                     scanf("%f", &x);
  371.                     errno = 0;
  372.                             }
  373.                printf("Arc sine of %f\n",x,y);
  374.                }
  375.             
  376.                ìá óδσ«ñÑ:
  377.             
  378.             Sine = -1.001
  379.             asin: DOMAIN error
  380.             Sine = -1
  381.             Arc sine of -1.000000=-1.570796
  382.             
  383.       
  384.                ASSERT
  385.             
  386.             #include <assert.h>
  387.             
  388.             void assert(expression);
  389.             
  390.                Ä»¿ßá¡¿Ñ.
  391.             
  392.                Åα«µÑñπαá  assert  »ÑτáΓáÑΓ ñ¿áú¡«ßΓ¿τÑ߬«Ñ ß««íΘÑ¡¿Ñ ¿ ºá-
  393.          óÑαΦáÑΓ óδºóá¡¡δ⌐ »α«µÑßß, Ñß½¿ expression ½«ª¡«,  0.  ä¿áú¡«ßΓ¿-
  394.          τÑ߬«Ñ ß««íΘÑ¡¿Ñ ¿¼ÑÑΓ Σ«α¼π:
  395.             
  396.             Assertion failed:  file <filename>, line <linenumber>,
  397.            
  398.          úñÑ filename  -  ¿¼∩  ¿ßσ«ñ¡«ú« Σá⌐½á, linenumber - ¡«¼Ñα ßΓ᫬¿,
  399.          ¬«Γ«αá∩ «Φ¿í«τ¡á.
  400.                àß½¿ expression ¿ßΓ¿¡¡« (¡Ñ¡π½Ñó«Ñ), ¡¿¬á¬«ú«  ñÑ⌐ßΓó¿∩  ¡Ñ
  401.          óδ»«½¡∩ÑΓß∩.
  402.                Åα«µÑñπαá assert «íδτ¡« ¿ß»«½∞ºπÑΓß∩ ñ½∩ «í¡áαπªÑ¡¿∩  ½«ú¿-
  403.          τÑ߬¿σ «Φ¿í«¬ ó »α«úαá¼¼Ñ. éδαáªÑ¡¿Ñ expression ñ«½ª¡« íδΓ∞ ºáñá-
  404.          ¡«  Γᬿ¼ «íαẫ¼, τΓ«íδ «¡« í佫 ¿ßΓ¿¡¡δ¼, Ñß½¿ »α«úαá¼¼á óδ»«½-
  405.          ¡∩ÑΓß∩ ¬á¬ ¡á¼ÑτÑ¡«. Å«ß½Ñ Γ«ú«  ¬á¬  «Γ½áªÑ¡á  »α«úαá¼¼á,  ¼«ªÑΓ
  406.          íδΓ∞  ¿ß»«½∞º«óᡠ߻ѵ¿á½∞¡δ⌐ "no debug" ¿ñÑ¡Γ¿Σ¿¬áΓ«α NDEBUG ñ½∩
  407.          πñá½Ñ¡¿∩ ó맮ó«ó assert ¿º »α«úαá¼¼δ. àß½¿ NDEBUG «»αÑñѽѡ  (½ε-
  408.          íδ¼  º¡áτÑ¡¿Ñ¼)  «»µ¿Ñ⌐  ¬«¼á¡ñ¡«⌐  ßΓ᫬¿  /D  ¿½¿  ß ñ¿αÑ¬Γ¿ó«⌐
  409.          #define, »αÑ»α«µÑßß«α ∩ºδ¬á æ¿ πñá½∩ÑΓ óßÑ ó맮óδ assert  ¿º  ¿ß-
  410.          σ«ñ¡«⌐ »α«úαá¼¼δ.
  411.             
  412.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  413.  
  414.                                       - 61 -
  415.          
  416.          
  417.             
  418.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  419.             
  420.                çá¼Ñτá¡¿Ñ. Åα«µÑñπαá assert αÑ὿º«óá¡á ¬á¬ ¼á¬α«.
  421.             
  422.                Åα¿¼Ñα:
  423.             
  424.             #include <stdio.h>
  425.             #include <assert.h>
  426.             
  427.             analyse_string (string)
  428.             char *string;
  429.             
  430.             {
  431.            /*  »α«óÑα¬á ßΓ᫬¿ »ÑαÑñ «íαáí«Γ¬«⌐  */
  432.             
  433.             assert (string != NULL);      /*  ¡Ñ ¼«ªÑΓ íδΓ∞ NULL,
  434.                                             ºñÑß∞   ñ«½ª¡á   íδΓ∞
  435.                                             ßΓ᫬á */
  436.             assert (*string != '\0');     /*    ¡Ñ   ¼«ªÑΓ   íδΓ∞
  437.                                              »πßΓ«⌐ */
  438.             .
  439.             .
  440.             .
  441.             }.
  442.             
  443.       
  444.                ATAN - ATAN2
  445.             
  446.             #include <math.h>
  447.             
  448.             double atan(x);     óδτ¿ß½∩ÑΓ áα¬Γá¡úѡߠx
  449.             double x;
  450.             
  451.             double atan2(y,x);  óδτ¿ß½∩ÑΓ áα¬Γá¡úѡߠy/x
  452.             double x;
  453.             double y;
  454.             
  455.                Ä»¿ßá¡¿Ñ.
  456.             
  457.                ÄíÑ  Σπ¡¬µ¿¿ atan ¿ atan2 ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ áα¬Γá¡úÑ¡ßá.
  458.          àß½¿ «íá áαúπ¼Ñ¡Γá atan2 αáó¡δ 0, Σπ¡¬µ¿∩ πßΓá¡áó½¿óáÑΓ  errno  ó
  459.          EDOM,  »ÑτáΓáÑΓ  ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαáΘáÑΓ
  460.          0.
  461.                Äíαaí«Γ¬a «Φ¿í«¬  ¼«ªÑΓ  íδΓ∞  ¼«ñ¿Σ¿µ¿α«óa¡a  »α¿  ¿ß»«½∞-
  462.          º«óa¡¿¿ »α«µÑñπαδ matherr.
  463.                æ¼.Γa¬ªÑ acos, asin, cos, matherr, sin, tan.
  464.             
  465.                Åα¿¼Ñα:
  466.             
  467.             #include <math.h>
  468.             
  469.             printf("%.7f\n", atan(1.0));            /* n/4 */
  470.             printf("%.7f\n", atan2(-1.0,1.0));     /* -n/4 */
  471.             
  472.  
  473.                                       - 62 -
  474.          
  475.          
  476.                ìá óδσ«ñÑ:
  477.             
  478.             0.7853982
  479.             -0.7853982
  480.             
  481.       
  482.                ATOF-ATOL
  483.                
  484.                #include <match.h>     êß»«½∞ºπÑΓ  ½¿í« <match.h>,
  485.                #include <stdlib.h>    ½¿í« <stdlib.h>.
  486.                                            
  487.                double atof (string);  »αÑ«íαáºπÑΓ ßΓ᫬π  string ó
  488.                                       double
  489.             
  490.                char *string           ßΓ᫬á,  »«ñ½ÑªáΘá∩ »αÑ«íαá-
  491.                                       º«óá¡¿ε
  492.                int atoi (string)      »αÑ«íαáºπÑΓ ßΓ᫬π string  ó
  493.                                       int
  494.             
  495.                long atol (string)     »αÑ«íαáºπÑΓ ßΓ᫬π string  ó
  496.                                       long
  497.             
  498.                char *string           ßΓ᫬á, »«ñ½ÑªáΘá∩  »αÑ«íαá-
  499.                                       º«óá¡¿ε
  500.                
  501.                Ä»¿ßá¡¿Ñ.
  502.                
  503.                ¥Γ¿ Σπ¡¬µ¿¿ »αÑ«íαáºπεΓ ß¿¼ó«½∞¡πε ßΓ᫬π ó º¡áτÑ¡¿Ñ ß »½á-
  504.          óáεΘÑ⌐  Γ«τ¬«⌐  ñó«⌐¡«⌐  Γ«τ¡«ßΓ¿ (atof), ó µÑ½«Ñ º¡áτÑ¡¿Ñ (atoi)
  505.          ¿½¿ ó ñ½¿¡¡«Ñ µÑ½«Ñ º¡áτÑ¡¿Ñ (atol).
  506.                êßσ«ñ¡á∩ ßΓ᫬á string  »αÑñßΓáó½∩ÑΓ  ß«í«⌐  »«ß½Ññ«óáΓѽ∞-
  507.          ¡«ßΓ∞  ß¿¼ó«½«ó, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ ¿¡ΓÑα»αÑΓ¿α«óá¡δ ¬á¬ τ¿ß½«ó«Ñ
  508.          º¡áτÑ¡¿Ñ «»αÑñѽѡ¡«ú« Γ¿»á.
  509.                öπ¡¬µ¿∩ »αѬαáΘáÑΓ τΓÑ¡¿Ñ ¿ßσ«ñ¡«⌐ ßΓ᫬¿  ¬á¬ Γ«½∞¬«  »«∩-
  510.          ó¿Γß∩  »Ñαóδ⌐  ß¿¼ó«½,  ¬«Γ«αδ⌐ ¡Ñ ¼«ªÑΓ íδΓ∞ ó«ß»α¿¡∩Γ ¬á¬ τáßΓ∞
  511.          τ¿ß½á (¿¼ ¼«ªÑΓ íδΓ∞ NULL-ß¿¼ó«½, ºáóÑαΦáεΘ¿⌐ ßΓ᫬π).
  512.                öπ¡¬µ¿∩ atof »αÑñ»«½áúáÑΓ, τΓ« ßΓ᫬á string ¿¼ÑÑΓ  ß½Ññπε-
  513.          Θπε Σ«α¼π:
  514.                
  515.                [whitespace][sign][digits][{d|D|E}[sign]digits]  ,
  516.                
  517.          úñÑ  [whitespase]  ß«ßΓ«¿Γ ¿º »α«íѽ«ó  ¿/¿½¿  º¡á¬«ó  Γáíπ½∩µ¿¿,
  518.          ¬«Γ«αδÑ ¿ú¡«α¿απεΓß∩; [sign] «º¡áτáÑΓ "+" ¿½¿ "-";  [digits]   -
  519.          -  «ñ¡á ¿½¿ ¡Ñ߬«½∞¬« ñÑß∩Γ¿τ¡δσ µ¿Σα. àß½¿ »ÑαÑñ ñÑß∩Γ¿τ¡«⌐ Γ«τ-
  520.          ¬«⌐ ¡ÑΓ µ¿Σα, Γ« σ«Γ∩ íδ «ñ¡á µ¿Σαá ñ«½ª¡á ßΓ«∩Γ∞ »«ß½Ñ ¡ÑÑ.  äÑ-
  521.          ß∩Γ¿τ¡δÑ  µ¿Σαδ  ¼«úπΓ  ß½Ññ«óáΓ∞ ºá »«¬áºáΓѽѼ ßΓѻѡ¿, ¬«Γ«αδ⌐
  522.          ß«ßΓ«¿Γ ¿º íπ¬óδ (d,D,e ¿½¿ E) ¿ ñÑß∩Γ¿τ¡«ú« µÑ½«ú« ß« º¡á¬«¼.
  523.                öπ¡¬µ¿¿ atoi ¿ atol ¡Ñ «íαáíáΓδóáεΓ  ñÑß∩Γ¿τ¡δÑ  Γ«τ¬¿  ¿½¿
  524.          »«¬áºáΓѽ¿ ßΓѻѡ¿. Çαúπ¼Ñ¡Γ string ñ½∩ φΓ¿σ Σπ¡¬µ¿⌐ ¿¼ÑÑΓ ó¿ñ:
  525.                
  526.                [whitespace][sign]digits     ,
  527.                
  528.          úñÑ  whitespace,  sign,  digits «í«º¡áτáεΓ Γ« ªÑ, τΓ« ¿ ñ½∩ atof.
  529.                
  530.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  531.  
  532.                                       - 63 -
  533.          
  534.          
  535.                
  536.                èáªñá∩ ¿º Σπ¡¬µ¿⌐ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ Γ¿»á double, int  ¿½¿
  537.          long,  »«½πτáѼ«Ñ ó αѺπ½∞ΓáΓÑ ¿¡ΓÑα»αÑΓᵿ¿ óσ«ñ¡δσ ß¿¼ó«½«ó ¬á¬
  538.          τ¿ßѽ.
  539.       
  540.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ αáó¡« 0 (0L ñ½∩ atol), Ñß½¿  óσ«ñ  ¡Ñ
  541.          ¼«ªÑΓ  íδΓ∞  »αÑ«íαẫóá¡  ó  º¡áτÑ¡¿Ñ ñá¡¡«ú« Γ¿»á. é«ºóαáΘáѼ«Ñ
  542.          º¡áτÑ¡¿Ñ ¡Ñ «»αÑñѽѡ« ó ß½πτáÑ  »ÑαÑ»«½¡Ñ¡¿∩.
  543.                æ¼. ΓᬪѠecvt, fcvt, gcvt.
  544.                 
  545.                Åα¿¼Ñα:
  546.            
  547.                æ½ÑñπεΘ¿Ñ  »α¿¼Ñαδ »«¬áºδóáεΓ, ¬á¬ τ¿ß½á, ºá»¿ßá¡¡δÑ ó ó¿ñÑ
  548.          ßΓ᫬, ¼«úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ó τ¿ß½«óδÑ º¡áτÑ¡¿∩ »α¿ ¿ß»«½∞º«-
  549.          óá¡¿¿ Σπ¡¬µ¿⌐ atof, atoi, atol:
  550.                
  551.                #include <math.h>
  552.                
  553.                extern long atol (\ );
  554.                main (\ )
  555.                      {
  556.                      char *s;
  557.                      double x;
  558.                      int i;
  559.                      long l;
  560.  
  561.                      s=" -2309.12E-15";
  562.                      x=atof(s);
  563.                      printf("%e\t",x);
  564.  
  565.                      s="7.8912654773d210";
  566.                      x=atof(s);
  567.                      printf("%e\t",x);
  568.  
  569.                      s="-9885";
  570.                      i=atoi(s);
  571.                      printf("%d\t",i);
  572.  
  573.                      s="98854 dollars";
  574.                      l=atol(s);
  575.                      printf("%ld\n",l);
  576.                      }
  577.       
  578.                BDOS
  579.             
  580.             #include <dos.h>
  581.             
  582.             int bdos(dosfn, dosdx, dosal);
  583.             int dosfn;                        ¡«¼Ñα Σπ¡¬µ¿¿
  584.             unsigned int dosdx;               º¡áτÑ¡¿Ñ αÑú¿ßΓαá DX
  585.             unsigned int dosal;               º¡áτÑ¡¿Ñ αÑú¿ßΓαá AL
  586.             
  587.                Ä»¿ßá¡¿Ñ.
  588.             
  589.                öπ¡¬µ¿∩ bdos óδ»«½¡∩ÑΓ ß¿ßΓѼ¡δ⌐ ó맮ó MS DOS, ¡«¼Ñα  ¬«Γ«-
  590.  
  591.                                       - 64 -
  592.          
  593.          
  594.          α«ú« «»αÑñѽѡ ó dosfn, »«ß½Ñ αẼÑΘÑ¡¿∩ ß««ΓóÑΓßΓóÑ¡¡« ó αÑú¿ßΓ-
  595.          αáσ DX ¿ AL º¡áτÑ¡¿⌐ dosdx ¿ dosal. öπ¡¬µ¿∩ bdos óδ»«½¡∩ÑΓ ¬«¼á¡-
  596.          ñπ INT 21H ñ½∩ «ßπΘÑßΓó½Ñ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá.
  597.                öπ¡¬µ¿∩   bdos   ºáñáÑΓß∩  ñ½∩  ¿ß»«½∞º«óá¡¿∩  »α¿  ó맮óáσ
  598.          DOS-ß¿ßΓѼ¡δσ ó맮ó«ó, ¬«Γ«αδÑ ¡Ñ »α¿¡¿¼áεΓ áαúπ¼Ñ¡Γ«ó  ¿½¿ Γ«½∞-
  599.          ¬« »α¿¡¿¼áεΓ ¿σ ó αÑú¿ßΓαδ DX(DH,DL) ¿/¿½¿ AL.
  600.             
  601.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  602.             
  603.                öπ¡¬µ¿∩ bdos ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX,  ºá»«¼¡Ñ¡¡«ú«
  604.          ß¿ßΓѼ¡δ¼ ó맮ó«¼.
  605.                æ¼.ΓᬪѠintdos, intdosx.
  606.             
  607.                çá¼Ñτá¡¿Ñ. ¥Γ«Γ ó맮ó ¡Ñ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ «ßπΘÑßΓó-
  608.          ½Ñ¡¿∩ ß¿ßΓѼ¡δσ ó맮ó«ó, ó ¬«Γ«αδσ π¬áºδóáεΓß∩ «Φ¿í¬¿ »«ßαÑñßΓó«¼
  609.          πßΓᡫ󬿠 Σ½áúá  »ÑαÑ¡«ßá.  Æ.¬. æ¿-»α«úαá¼¼δ ¡Ñ ¿¼ÑεΓ ñ«ßΓπ»á ¬
  610.          φΓ«¼π Σ½áúπ, ßΓáΓπß ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡Ñ ¼«ªÑΓ íδΓ∞  «»αÑñÑ-
  611.          ½Ñ¡. é φΓ«¼ ß½πτáÑ ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ intdos.
  612.             
  613.                Åα¿¼Ñα:
  614.             
  615.                é  ß½ÑñπεΘѼ  »α¿¼ÑαÑ óδó«ñ¿Γß∩ »«ñ߬Ậá 9 Σπ¡¬µ¿Ñ⌐ MS DOS
  616.          (óδó«ñ ßΓ᫬¿). Å«ß¬«½∞¬π º¡áτÑ¡¿Ñ αÑú¿ßΓαá AL ¡Ñ ∩ó½∩ÑΓß∩  ¡Ñ«í-
  617.          σ«ñ¿¼δ¼,  Γ«  »ÑαÑñáÑΓß∩ 0. ¥Γ«Γ »α¿¼Ñα αáí«ΓáÑΓ »αáó¿½∞¡« Γ«½∞¬«
  618.          ñ½∩ ¼á½«⌐ ¿ ßαÑñ¡Ñ⌐ ¼«ñѽÑ⌐ »á¼∩Γ¿, Γᬠ¬á¬ bdos ¡Ñ ¼Ñ¡∩ÑΓ º¡áτÑ-
  619.          ¡¿∩ ßÑú¼Ñ¡Γ«ó αÑú¿ßΓα«ó.
  620.             
  621.             #include <dos.h>
  622.             
  623.             char *buffer = "Enter file name :$";
  624.             
  625.             /* AL ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼δ¼, »«φΓ«¼π »ÑαÑñáÑΓß∩ 0 */
  626.             
  627.             bdos(9,(unsigned)buffer,0);
  628.  
  629.                BESSEL
  630.             
  631.             #include <math.h>
  632.            
  633.             double j0(x);
  634.             
  635.             double j1(x);
  636.             
  637.             double jn(n,x);
  638.             
  639.             double y0(x);
  640.  
  641.             double y1(x);
  642.             
  643.             double yn(n,x);
  644.             
  645.             double x;           º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
  646.             int n;              µÑ½δ⌐ »«α∩ñ«¬
  647.             
  648.  
  649.                                       - 65 -
  650.                         
  651.                
  652.                Ä»¿ßá¡¿Ñ.
  653.           
  654.                Åα«µÑñπαδ j0, j1, jn óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« Σπ¡¬µ¿¿  üÑß-
  655.          ßѽ∩ »Ñαó«⌐ ßΓѻѡ¿ »«α∩ñ¬á - 0, 1 ¿ n.
  656.                Åα«µÑñπαδ  y0, y1, yn óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« Σπ¡¬µ¿¿ üÑß-
  657.          ßѽ∩ óΓ«α«⌐ ßΓѻѡ¿ »«α∩ñ¬á - 0,1 ¿ n. Çαúπ¼Ñ¡Γ x ñ«½ªÑ¡ íδΓ∞ »«-
  658.          ½«ª¿Γѽ∞¡δ¼.
  659.             
  660.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  661.       
  662.                ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ Σπ¡¬µ¿⌐ üÑßßѽ∩ ñ½∩ x. àß-
  663.          ½¿ x ∩ó½∩ÑΓß∩ «Γα¿µáΓѽ∞¡δ¼ ñ½∩ y0, y1, yn, »α«µÑñπαá  πßΓá¡áó½¿-
  664.          óáÑΓ errno ó EDOM, »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿
  665.          ó«ºóαáΘáÑΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE.
  666.                Äíαaí«Γ¬a  «Φ¿í«¬  ¼«ªÑΓ  íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿º¼Ñ¡Ñ¡¿¿
  667.          »α«µÑñπαδ matherr.
  668.                æ¼.ΓᬪѠmatherr.
  669.             
  670.                Åα¿¼Ñα:
  671.             
  672.             #include <math.h>
  673.             
  674.             double x, y, z;
  675.             .
  676.             .
  677.             .
  678.             y = j0(x);
  679.             z = yn(3,x);
  680.             
  681.       
  682.                BSEARCH
  683.             
  684.             #include <search.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  685.                                    Σπ¡¬µ¿¿
  686.             
  687.             char *bsearch(key,base,num,width,compare);
  688.             char *key;             ¬½ετ »«¿ß¬á
  689.             char *base;            π¬áºáΓѽ∞  ¡á  »«¿ß¬«óπε   íáºπ
  690.                                    ñá¡¡δσ
  691.             unsigned num,width;    τ¿ß½« ¿ αẼÑα φ½Ñ¼Ñ¡Γ«ó
  692.             int (*compare)();      π¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε  ßαáó¡Ñ¡¿∩
  693.             
  694.                Ä»¿ßá¡¿Ñ.
  695.             
  696.                öπ¡¬µ¿∩ bsearch »α«¿ºó«ñ¿Γ ñó«¿τ¡δ⌐ »«¿ß¬ ó «Γß«αΓ¿α«óá¡¡«¼
  697.          ¼áßß¿óÑ ¿º num φ½Ñ¼Ñ¡Γ«ó, αẼÑα  ¬áªñ«ú«  φ½Ñ¼Ñ¡Γá  αáóÑ¡  width
  698.          íá⌐Γ.  Base  -  π¬áºáΓѽ∞ ¡á ¡áτὫ ¼áßß¿óá, key - º¡áτÑ¡¿Ñ ¬½ετá
  699.          »«¿ß¬á.
  700.                Çαúπ¼Ñ¡Γ compare ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á »α«µÑñπαπ,  »«ßΓáó-
  701.          ½∩Ѽπε  »«½∞º«óáΓѽѼ,  ¬«Γ«αá∩ ßαáó¡¿óáÑΓ ñóá φ½Ñ¼Ñ¡Γá ¼áßß¿óá ¿
  702.          ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, «»αÑñѽ∩εΘÑÑ ¿σ «Γ¡«ΦÑ¡¿Ñ. é ΓÑτÑ¡¿¿  »«¿ß¬á
  703.          Σπ¡¬µ¿∩  bsearch  ¼«ªÑΓ  óδºδóáΓ∞ »α«µÑñπαπ compare «ñ¿¡ ¿½¿ ¡Ñß-
  704.          ¬«½∞¬« αáº, »ÑαÑñáóá∩ ó ¬áªñ«¼ ó맮óÑ π¬áºáΓѽ¿ ¡á  ñóá  φ½Ñ¼Ñ¡Γá
  705.          ¼áßß¿óá. Åα«µÑñπαá ñ«½ª¡á ßαáó¡¿óáΓ∞ φ½Ñ¼Ñ¡Γδ, á ºáΓѼ ó«ºóαáΘáΓ∞
  706.          «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐.
  707.                 
  708.  
  709.                                       - 66 -
  710.          
  711.          
  712.               çìÇùàìêà            æî¢æï çìÇùàìêƒ
  713.             
  714.             ¼Ñ¡∞ΦÑ 0         element1 ¼Ñ¡∞ΦÑ, τѼ element2
  715.                              
  716.                0             element1 αáóÑ¡ element2
  717.                              
  718.             í«½∞ΦÑ 0         element1 í«½∞ΦÑ, τѼ element2
  719.                 
  720.             
  721.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  722.             
  723.                öπ¡¬µ¿∩  bsearch  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞ ¡á »Ñαó«Ñ óσ«ªñÑ¡¿Ñ
  724.          ¬½ετá key ó ¼áßß¿ó, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ base.
  725.                àß½¿ key ¡Ñ ¡á⌐ñÑ¡, Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NULL.
  726.                æ¼. ΓᬪѠlfind, lsearch, gsort.
  727.             
  728.                Åα¿¼Ñα:
  729.             
  730.                /* öπ¡¬µ¿∩ bsearch »α«¿ºó«ñ¿Γ ñó«¿τ¡δ⌐ »«¿ß¬  ó  «Γß«αΓ¿α«-
  731.          óá¡¡«¼  ¼áßß¿óÑ  ñ½∩  φ½Ñ¼Ñ¡Γá  "key"  ¿  ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
  732.          ßΓαπ¬Γπαπ, ó ¬«Γ«α«⌐ ¡áσ«ñ¿Γß∩ ¬½ετ key, ¿½¿ ó«ºóαáΘáÑΓ NULL, Ñß-
  733.          ½¿ ¬½ετá ¡ÑΓ. */
  734.             
  735.             #include <search.h>
  736.             #include <string.h>
  737.             #include <stdio.h>
  738.             int compare();
  739.       
  740.                /* ñ«½ª¡á íδΓ∞ «íΩ∩ó½Ñ¡á ¬á¬ Σπ¡¬µ¿∩ */
  741.             
  742.             main (argc, argv)
  743.                  int argc;
  744.                  char **argv;
  745.                  {
  746.             
  747.                   char **result;
  748.                   char *key = "PATH";
  749.             
  750.                /* ß½ÑñπεΘ¿⌐  «»ÑαáΓ«α  ¡áσ«ñ¿Γ  áαúπ¼Ñ¡Γ,  ¡áτ¿¡áεΘ¿⌐ß∩  ß
  751.          "PATH", ó »αÑñ»«½«ªÑ¡¿¿, τΓ« áαúπ¼Ñ¡Γδ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ «Γß«αΓ¿-
  752.          α«óá¡δ */
  753.             
  754.                   result = (char **)bsearch((char *)&key,
  755.                            (char *)argv, argc, sizeof(char *),
  756.                            compare);
  757.                   if (result)
  758.                      printf ("%s found\n", *result);
  759.                   else
  760.                      printf("PATH not found!\n");
  761.                  }
  762.             
  763.             int compare (arg1, arg2)
  764.                 char **arg1, **arg2;
  765.             
  766.                 {
  767.  
  768.                                       - 67 -
  769.          
  770.          
  771.                  return(strncmp(*arg1, *arg2, strlen(*arg1)));
  772.                 }.
  773.             
  774.                CABS
  775.             
  776.             #include <math.h>
  777.           
  778.             double cabs(z);
  779.             struct  complex  z;  ß«ñÑαª¿Γ  óÑΘÑßΓóÑ¡¡πε  ¿  ¼¡¿¼πε
  780.                                  τáßΓ¿
  781.             
  782.                Ä»¿ßá¡¿Ñ.
  783.             
  784.                öπ¡¬µ¿∩  cabs  óδτ¿ß½∩ÑΓ  áíß«½εΓ¡«Ñ  º¡áτÑ¡¿Ñ ¬«¼»½Ñ¬ß¡«ú«
  785.          τ¿ß½á. è«¼»½Ñ¬ß¡«Ñ τ¿ß½« ñ«½ª¡« íδΓ∞ ßΓαπ¬Γπα«⌐ ß Γ¿»«¼  complex,
  786.          «íΩ∩ó½Ñ¡¡«⌐ ó <math.h>, ß½ÑñπεΘ¿¼ «íαẫ¼:
  787.             struct complex  {
  788.                     double x,y;
  789.                     };
  790.             
  791.                é맮ó cabs φ¬ó¿óá½Ñ¡ΓÑ¡ ß½ÑñπεΘѼπ:
  792.             
  793.                sgrt(z.x*z.x + z.y*z.y)
  794.                
  795.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  796.             
  797.                öπ¡¬µ¿∩ cabs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ¬á¬ «»¿ßá¡« óδ-
  798.          ΦÑ.  Åα¿ »ÑαÑ»«½¡Ñ¡¿¿ Σπ¡¬µ¿∩ óδºδóáÑΓ »α«µÑñπαπ matherr, ó«ºóαá-
  799.          ΘáÑΓ º¡áτÑ¡¿Ñ HUGE ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE.
  800.                æ¼.ΓᬪѠabs, fabs, labs.
  801.             
  802.                Åα¿¼Ñα:
  803.             
  804.             #include <math.h>
  805.             
  806.             struct complex value;
  807.             double d;
  808.             
  809.             value.x = 3.0;
  810.             value.y = 4.0;
  811.             
  812.             d = cabs(value);
  813.             
  814.       
  815.                CALLOC
  816.             
  817.             #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  818.                                    Σπ¡¬µ¿¿
  819.             
  820.             char *calloc(n,size);
  821.             unsigned n;            ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó
  822.             unsigned size;         ñ½¿¡á ¬áªñ«ú« φ½Ñ¼Ñ¡Γá ó íá⌐Γáσ
  823.             Ä»¿ßá¡¿Ñ
  824.             
  825.                öπ¡¬µ¿∩ calloc ºáσóáΓδóáÑΓ »α«ßΓαá¡ßΓó« ñ½∩ σαá¡Ñ¡¿∩ ¼áßß¿-
  826.  
  827.                                       - 68 -
  828.          
  829.          
  830.          óá ¿º n φ½Ñ¼Ñ¡Γ«ó, ¬áªñδ⌐ ñ½¿¡«⌐ size íá⌐Γ. èáªñδ⌐ φ½Ñ¼Ñ¡Γ ¿¡¿µ¿-
  831.          á½¿º¿απÑΓß∩ ó 0.
  832.             
  833.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  834.             
  835.                öπ¡¬µ¿∩ calloc ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  char  ¡á  ºáσóáτÑ¡¡«Ñ
  836.          »α«ßΓαá¡ßΓó«.
  837.                é  »á¼∩Γ¿,  ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
  838.          αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá.  ùΓ«íδ
  839.          »«½πτ¿Γ∞  π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«í-
  840.          αẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
  841.                é«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ «ßΓὫß∞ ¡Ññ«ßΓáΓ«τ¡«  »á-
  842.          ¼∩Γ¿.
  843.                æ¼.ΓᬪѠfree, haloc, hfree, malloc, realloc.
  844.             
  845.                Åα¿¼Ñα:
  846.             
  847.             #include <malloc.h>
  848.             
  849.             long *lalloc;
  850.                  .
  851.                  .
  852.                  .
  853.          /*  ºáσóáΓδóáÑΓ ñ«ßΓáΓ«τ¡«Ñ ¬«½¿τÑßΓó« ¼ÑßΓá ñ½∩ 40 ñ½¿¡¡δσ
  854.          µÑ½δσ ¿ ¿¡¿µ¿á½¿º¿απÑΓ ¿σ ó 0 */
  855.             
  856.             lalloc=(long*)calloc(40, sizeof(long));
  857.                                                                 
  858.                
  859.                CEIL
  860.             
  861.             #include <math.h>
  862.             
  863.             double ceil(x);
  864.             double x;        º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
  865.             
  866.                Ä»¿ßá¡¿Ñ.
  867.             
  868.                öπ¡¬µ¿∩ ceil ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ double, »αÑñßΓáó½∩εΘÑÑ ¡á-
  869.          ¿¼Ñ¡∞ΦÑÑ µÑ½«Ñ, ¬«Γ«α«Ñ í«½∞ΦÑ ¿½¿ αáó¡« x.
  870.             
  871.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  872.             
  873.                öπ¡¬µ¿∩ ceil  ó«ºóαáΘáÑΓ  double  αѺπ½∞ΓáΓ.  é«ºóαáΘáѼ«ú«
  874.          º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  875.       
  876.                æ¼.ΓᬪѠfloor, fmod.
  877.             
  878.             
  879.                Åα¿¼Ñα:
  880.            
  881.             #include <math.h>
  882.             
  883.             double y;
  884.             .
  885.  
  886.                                       - 69 -
  887.          
  888.          
  889.             .
  890.             .
  891.             y = ceil(1.05);    /* y = 2.0 */
  892.             y = ceil(-1.05);   /* y = -1.0 */
  893.  
  894.       
  895.                CGETS
  896.             
  897.             #include <conio.h>   ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  898.                                  Σπ¡¬µ¿¿
  899.             
  900.            
  901.             char *cgets(str);
  902.             char *str;           »á¼∩Γ∞ ñ½∩ σαá¡Ñ¡¿∩ ñá¡¡δσ
  903.             
  904.             Ä»¿ßá¡¿Ñ.
  905.                 
  906.                öπ¡¬µ¿∩  cgets τ¿ΓáÑΓ ßΓ᫬π ß¿¼ó«½«ó »α∩¼« ß ¬«¡ß«½¿ ¿ ºá-
  907.          »«¼¿¡áÑΓ ßΓα«¬π ¿ ÑÑ ñ½¿¡π ó ¼ÑßΓ«»«½«ªÑ¡¿¿, π¬áºá¡¡«¼  str.  Str
  908.          ñ«½ª¡« íδΓ∞ π¬áºáΓѽѼ ¡á ¼áßß¿ó ß¿¼ó«½«ó. ÅÑαóδ⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá
  909.          -  str[0] ñ«½ªÑ¡ ß«ñÑαªáΓ∞ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π (ó ß¿¼ó«½áσ) τ¿ΓáÑ-
  910.          ¼«⌐ ßΓ᫬¿. îáßß¿ó ñ«½ªÑ¡ íδΓ∞ ñ«ßΓáΓ«τ¡« í«½∞Φ¿¼,  τΓ«íδ  ß«ñÑα-
  911.          ªáΓ∞  ßΓ᫬π, ß¿¼ó«½ «¬«¡τá¡¿∩ '\0' ¿  ñóá ñ«»«½¡¿Γѽ∞¡δσ  íá⌐Γá.
  912.          öπ¡¬µ¿∩  cgets »α«ñ«½ªáÑΓ ßτ¿ΓδóáΓ∞ ß¿¼ó«½δ, »«¬á ¡Ñ íπñÑΓ »α«τ¿-
  913.          Γá¡á  ¬«¼í¿¡áµ¿∩  "éè-Åæ"  ¿½¿ «»αÑñѽѡ¡«Ñ ¬«½¿τÑßΓó«  ß¿¼ó«½«ó.
  914.          æΓα«¬á  ºá»«¼¿¡áÑΓß∩,  ¡áτ¿¡á∩ ß str[2]. àß½¿  ¬«¼í¿¡áµ¿∩ "éè-Åæ"
  915.          »α«τ¿Γá¡á, »ÑαÑñ  ºá»«¼¿¡á¡¿Ñ¼  «¡á  ºá¼Ñ¡∩ÑΓß∩  ¡π½Ñóδ¼ ß¿¼ó«½«¼
  916.          '\0'.
  917.                öπ¡¬µ¿∩  cgets ó« óΓ«α«¼ φ½Ñ¼Ñ¡ΓÑ ¼áßß¿óá str[1] ºá»«¼¿¡áÑΓ
  918.          ñÑ⌐ßΓó¿Γѽ∞¡πε ñ½¿¡π ßΓ᫬¿.
  919.             
  920.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  921.             
  922.                öπ¡¬µ¿∩ cgets ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¬ ¡áτá½π ßΓ᫬¿, ¬«Γ«αá∩
  923.          ¡áσ«ñ¿Γß∩ ó str[2]. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  924.                æ¼.ΓᬪѠgetch, getche.
  925.             
  926.                Åα¿¼Ñα:
  927.             
  928.             #include <conio.h>
  929.             
  930.             char *result;
  931.             int numread;
  932.             .
  933.             .
  934.             .
  935.             *buffer=80; / *¼á¬ß¿¼á½∞¡«Ñ ¬«½¿τÑßΓó« ß¿¼ó«½«ó */
  936.                         
  937.             /* é¡¿¼á¡¿Ñ. *buffer φ¬ó¿óá½Ñ¡Γ¡« *buffer[0] */
  938.             
  939.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óó«ñ∩Γ ßΓ᫬π ß ¬½áó¿áΓπαδ ¿ ¡áσ«ñ∩Γ
  940.          ÑÑ ñ½¿¡π: */
  941.             
  942.                 result=cgets(buffer);
  943.                 numread=buffer[1];
  944.  
  945.                                       - 70 -
  946.          
  947.          
  948.                 
  949.                /* result π¬áºδóáÑΓ ¡á ßΓ᫬π, numread - ¡á ÑÑ ñ½¿¡π  ("éè"
  950.          ¡Ñ ßτ¿ΓáÑΓß∩, Γ.¬. ºá¼Ñ¡∩ÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ */.
  951.  
  952.                CHDIR
  953.             
  954.             #include <direct.h>  ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  955.                                  Σπ¡¬µ¿¿
  956.             
  957.             int chdir(pathname);
  958.             char *pathname;      path-¿¼∩  ¡«ó«ú«  αáí«τÑú« ñ¿αѬ-
  959.                                  Γ«α¿∩
  960.             
  961.                Ä»¿ßá¡¿Ñ.
  962.             
  963.                öπ¡¬µ¿∩ chdir ¿º¼Ñ¡∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐ ¡á ñ¿αѬ-
  964.          Γ«α¿⌐, «»αÑñѽ∩Ѽδ⌐ »« pathname; pathname ñ«½ªÑ¡ ßßδ½áΓ∞ß∩ ¡á ßπ-
  965.          ΘÑßΓóπεΘ¿⌐ ñ¿αÑ¬Γ«α¿⌐.
  966.             
  967.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  968.             
  969.                öπ¡¬µ¿∩  chdir ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ αáí«τ¿⌐ ñ¿αÑ¬Γ«-
  970.          α¿⌐ πß»ÑΦ¡« ¿º¼Ñ¡Ñ¡. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á  «Φ¿í-
  971.          ¬π;  ó  φΓ«¼ ß½πτáÑ errno πßΓá¡áó½¿óáÑΓß∩ ó ENOENT, π¬áºδóá∩, τΓ«
  972.          ºáñá¡¡«Ñ path-¿¼∩ ¡Ñ ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡«. ÄΦ¿í¬¿ ¡Ñ ó«º¡¿¬áεΓ, Ñß-
  973.          ½¿ pathname «»αÑñѽ∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐.
  974.                æ¼.ΓᬪѠmkdir, rmdir, system.
  975.             
  976.                Åα¿¼Ñα:
  977.             
  978.             #include <direct.h>
  979.             
  980.             /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¿º¼Ñ¡∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐
  981.             ** ñ¿αÑ¬Γ«α¿⌐ ¡á ñ¿αÑ¬Γ«α¿⌐ ¬«α¡∩   */
  982.             
  983.             chdir("/"); /* çá¼Ñτá¡¿Ñ: φ¬ó¿óá½Ñ¡Γ¡« chdir("\\") */
  984.             
  985.       
  986.       
  987.                CHMOD
  988.          
  989.             #include <sys\types.h>
  990.             #include <sys\stat.h>
  991.             #include <io.h>       ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  992.                                   Σπ¡¬µ¿¿
  993.             
  994.             int chmod(pathname,pmode);
  995.             char *pathname;       path-¿¼∩ ßπΘÑßΓóπεΘÑú« Σá⌐½á
  996.             int pmode;            αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» ñ½∩ Σá⌐½á
  997.             
  998.                Ä»¿ßá¡¿Ñ.
  999.             
  1000.                öπ¡¬µ¿∩ chmod ¿º¼Ñ¡∩ÑΓ αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» ñ½∩ Σá⌐½á, ºáñá¡-
  1001.          ¡«ú« path-¿¼Ñ¡Ñ¼. ÉáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» π»αáó½∩ÑΓ τΓÑ¡¿Ñ¼ ¿  ºá»¿ß∞ε
  1002.          Σá⌐½á. è«¡ßΓá¡Γ¡«Ñ óδαáªÑ¡¿Ñ pmode ß«ßΓ«¿Γ ¿º «ñ¡«⌐ ¿½¿ «íÑ¿σ ¼á-
  1003.  
  1004.                                       - 71 -
  1005.          
  1006.          
  1007.          ¡¿ΣÑßΓ¡δ󠬫¡ßΓá¡Γ S_IWRITE ¿ S_IREAD, «»αÑñѽѡ¡δσ ó <sys\stat.h>.
  1008.          ïεí«Ñ  ñαπú«Ñ  º¡áτÑ¡¿Ñ  ñ½∩ pmode ¿ú¡«α¿απÑΓß∩. è«úñá ºáñá¡δ «íÑ
  1009.          ¬«¡ßΓá¡Γδ, «¡¿ «íΩÑñ¿¡∩εΓß∩ ½«ú¿τÑ߬¿¼ «»ÑαáΓ«α«¼ êïê (:). ç¡áτÑ-
  1010.          ¡¿∩ áαúπ¼Ñ¡Γ«ó pmode »αÑñßΓáó½Ñ¡δ ¡¿ªÑ.
  1011.  
  1012.             
  1013.             çìÇùàìêà                      æî¢æï çìÇùàìêƒ
  1014.             
  1015.             S_IWRITE                     αáºαÑΦѡᠺỿß∞
  1016.             
  1017.             S_IREAD                      αáºαÑΦÑ¡« τΓÑ¡¿Ñ
  1018.             
  1019.             S_IREAD : S_IWRITE           αáºαÑΦÑ¡δ τΓÑ¡¿Ñ ¿ ºá»¿ß∞
  1020.             
  1021.                àß½¿ αáºαÑΦÑ¡¿Ñ ¡á ºá»¿ß∞ ¡Ñ ºáñá¡«, Σá⌐½  ñ«ßΓπ»Ñ¡  Γ«½∞¬«
  1022.          ñ½∩  τΓÑ¡¿∩.  é MS DOS óßÑ Σá⌐½δ ñ«ßΓπ»¡δ ñ½∩ τΓÑ¡¿∩, »«φΓ«¼π ¡Ñ-
  1023.          ó«º¼«ª¡« ºáñá¡¿Ñ αáºαÑΦÑ¡¿∩  Γ«½∞¬«  ¡á  ºá»¿ß∞.  Å«φΓ«¼π  αѪ¿¼δ
  1024.          S_IWRITE ¿ S_IREAD : S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
  1025.             
  1026.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1027.             
  1028.                öπ¡¬µ¿∩  chmod ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ αáºαÑΦÑ¡¡δ⌐ ñ«ß-
  1029.          Γπ» πß»ÑΦ¡« ¿º¼Ñ¡Ñ¡. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ  «í
  1030.          «Φ¿í¬Ñ;  ó  φΓ«¼ ß½πτáÑ errno πßΓá¡áó½¿óáÑΓß∩ ó ENOENT, π¬áºδóá∩,
  1031.          τΓ« «»αÑñѽѡ¡δ⌐ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡.
  1032.                æ¼.ΓᬪѠaccess, creat, fstat, open, stat.
  1033.             
  1034.            
  1035.                Åα¿¼Ñα:
  1036.             
  1037.             #include <sys\types.h>
  1038.             #include <sys.stat.h>
  1039.             #include <io.h>
  1040.             int result;
  1041.             .
  1042.             .
  1043.             .
  1044.             result=chmode("data",S_IREAD);
  1045.                /* ß«ºñáΓ∞ Σá⌐½ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ */
  1046.             if (result==-1)
  1047.                perror("can't change file mode");
  1048.             
  1049.       
  1050.       
  1051.                CHSIZE
  1052.             
  1053.             #include <io.h>      ΓαÑíπÑΓß∩  Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1054.                                  Σπ¡¬µ¿¿
  1055.             
  1056.             int chsize(handle,size);
  1057.             int handle;          handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1058.                                  Σá⌐½
  1059.             long size;           ¡«óá∩ ñ½¿¡á Σá⌐½á ó íá⌐Γáσ
  1060.             
  1061.                Ä»¿ßá¡¿Ñ.
  1062.  
  1063.                                       - 72 -
  1064.          
  1065.          
  1066.             
  1067.                öπ¡¬µ¿∩  chsize πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ Σá⌐½, ßó∩ºá¡¡δ⌐ ß
  1068.          handle-α«¼, ñ« αẼÑαá, «»αÑñѽ∩Ѽ«ú« áαúπ¼Ñ¡Γ«¼ size. öá⌐½  ñ«½-
  1069.          ªÑ¡  íδΓ∞  «Γ¬αδΓ  ó  αѪ¿¼Ñ, ¬«Γ«αδ⌐ αáºαÑΦáÑΓ ºá»¿ß∞. àß½¿ Σá⌐½
  1070.          πóѽ¿τ¿óáÑΓß∩, ¬ ¡Ñ¼π ñ«íáó½∩εΓß∩ ¡π½ÑóδÑ ß¿¼ó«½δ '\0'. àß½¿ Σá⌐½
  1071.          π¼Ñ¡∞ΦáÑΓß∩,  óßÑ  ñá¡¡δÑ «Γ ¬«¡µá π¬«α«τÑ¡¡«ú« Σá⌐½á ñ« »Ñαó«¡á-
  1072.          τá½∞¡«⌐ ñ½¿¡δ Σá⌐½á ΓÑα∩εΓß∩.
  1073.             
  1074.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1075.             
  1076.                öπ¡¬µ¿∩ chsize ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ Σá⌐½ πß»ÑΦ¡« ¿º-
  1077.          ¼Ñ¡Ñ¡.  é«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ  -1  ßó¿ñÑΓѽ∞ßΓóπÑΓ  «í «Φ¿í¬Ñ  ¿
  1078.          errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  1079.                            
  1080.             çìÇùàìêà             æî¢æï çìÇùàìêƒ
  1081.                            
  1082.             EACCES         çáñá¡¡δ⌐  Σá⌐½  «»αÑñѽѡ  Γ«½∞¬«   ñ½∩
  1083.                            τΓÑ¡¿∩. ä½∩ óÑαß¿⌐ MS DOS 3.0 ¿ ßΓáαΦ¿σ,
  1084.                            EACCES ßó¿ñÑΓѽ∞ßΓóπÑΓ « »α¿¡πñ¿Γѽ∞¡«⌐
  1085.                            í½«¬¿α«ó¬Ñ.(Ä»αÑñѽѡ¡δ⌐ Σá⌐½  ºáí½«¬¿-
  1086.                            α«óá¡ ñ½∩ ñ«ßΓπ»á)
  1087.                            
  1088.             EBADF          ìÑóÑα¡δ⌐ Σá⌐½«óδ⌐ handle
  1089.                            
  1090.             ENOSPC         ìá  πßΓα«⌐ßΓóÑ ¡Ñ  «ßΓὫß∞  ßó«í«ñ¡«ú«
  1091.                            ¼ÑßΓá
  1092.             
  1093.                æ¼.ΓᬪѠclose, creat, open.
  1094.             
  1095.                Åα¿¼Ñα:
  1096.             
  1097.             #include <io.h>
  1098.             #include <fcntl.h>
  1099.             #include <sys\types.h>
  1100.             #include <sys\stat.h>
  1101.             
  1102.             #define MAXSIZE 32768L
  1103.             
  1104.             int fh, result;
  1105.             .
  1106.             .
  1107.             .
  1108.             fh=open("data", O_RDWR|O_CREAT, S_IREAD|S_IWRITE);
  1109.       
  1110.             .
  1111.             .
  1112.             .
  1113.             /* »ÑαÑñ ºá¬αδΓ¿Ñ¼ Σá⌐½á ¡πª¡« πíÑñ¿Γ∞ß∩, τΓ« «¡
  1114.             ** ¡Ñ ñ½¿¡¡ÑÑ 32è
  1115.             */
  1116.             if (lseek(fh,LO,2)>MAXSIZE)
  1117.                result=chsize(fh,MAXSIZE);
  1118.             
  1119.       
  1120.                _CLEAR87
  1121.  
  1122.                                       - 73 -
  1123.          
  1124.          
  1125.             
  1126.             #include <float.h>
  1127.             
  1128.             unsigned int _clear87();  »«½πτáÑΓ  ¿  «τ¿ΘáÑΓ ß½«ó«
  1129.                                       ßΓáΓπßá  »½áóáεΘÑ⌐ Γ«τ¬¿
  1130.             
  1131.                Ä»¿ßá¡¿Ñ.
  1132.             
  1133.                öπ¡¬µ¿∩ _clear87 »«½πτáÑΓ ¿ ßΓ¿αáÑΓ ß½«ó« ßΓáΓπßá »½áóáεΘÑ⌐
  1134.          Γ«τ¬¿. æ½«ó« ßΓáΓπßá »½áóáεΘÑ⌐ Γ«τ¬¿ ∩ó½∩ÑΓß∩  ¬«¼í¿¡áµ¿Ñ⌐  ß½«óá
  1135.          ßΓáΓπßá  8087/80287 ¿ ñαπú¿σ ß«ßΓ«∩¡¿⌐, «í¡áαπª¿óáѼδσ 8087/80287
  1136.          handler-«¼, Γᬿσ ¬á¬ »ÑαÑ»«½¡Ñ¡¿Ñ ¿ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿ ßΓѬᠻ½á-
  1137.          óáεΘÑ⌐ Γ«τ¬¿.
  1138.             
  1139.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1140.             
  1141.                ü¿Γδ ó ó«ºóαáΘáѼ«¼ º¡áτÑ¡¿¿  «í«º¡áτáεΓ  ßΓáΓπß  »½áóáεΘÑ⌐
  1142.          Γ«τ¬¿.  æ¼«Γα¿ΓÑ  include-Σá⌐½ <float.h> ñ½∩ »«½¡«ú« «»¿ßá¡¿∩ í¿-
  1143.          Γ«ó, ó«ºóαáΘáѼδσ Σπ¡¬µ¿Ñ⌐ _clear87.
  1144.                çá¼Ñτá¡¿Ñ. ü«½∞Φ¿¡ßΓó« ¿º ¼áΓѼáΓ¿τÑ߬¿σ í¿í½¿«ΓÑτ¡δσ Σπ¡¬-
  1145.          µ¿⌐ ¼«ñ¿Σ¿µ¿απÑΓ ß½«ó« ßΓáΓπßá 8087/80287 ß  ¡Ñ»αÑñ߬áºπÑ¼δ¼  αÑ-
  1146.          ºπ½∞ΓáΓ«¼.  é«ºóαáΘáѼδÑ  º¡áτÑ¡¿∩  Σπ¡¬µ¿⌐  _clear87 ¿ _status87
  1147.          ßΓá¡«ó∩Γß∩ í«½ÑÑ ñ«ßΓ«óÑα¡δ¼¿ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ  «»Ñαá-
  1148.          µ¿⌐  ß  »½áóáεΘÑ⌐  Γ«τ¬«⌐  ß ¿ºóÑßΓ¡δ¼¿ ß«ßΓ«∩¡¿∩¼¿ ß½«óá ßΓáΓπßá
  1149.          »½áóáεΘÑ⌐ Γ«τ¬¿.
  1150.                æ¼.ΓᬪѠ_control87, _status87.
  1151.             
  1152.                Åα¿¼Ñα:
  1153.             
  1154.             #include <stdio.h>
  1155.             #include<float.h>
  1156.             
  1157.             double a = 1e-40,b;
  1158.             float x,y;
  1159.             
  1160.             main()
  1161.               {
  1162.               printf("status=%.4x - clear\n",_clear87());
  1163.               y = a;
  1164.                 
  1165.                /* ºá»«¼¡Ñ¡¡«Ñ ó y ∩ó½∩ÑΓß∩ ¡ÑΓ«τ¡δ¼ ¿ ß »«ΓÑα∩¡¡«⌐  º¡áτ¿-
  1166.          ¼«ßΓ∞ε */
  1167.               printf("status=%.4xx - inexact, underflow\n",
  1168.                      _clear87());
  1169.               b = y;    /* y ∩ó½∩ÑΓß∩ ¡Ñ»αáó¿½∞¡δ¼ */
  1170.               printf("status=%.4x - denormal\n", _clear87());
  1171.               }
  1172.             
  1173.       
  1174.                CLEARERR
  1175.             
  1176.             #include <stdio.h>
  1177.             void clearerr(stream);
  1178.             
  1179.             FILE  *stream;          π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ FILE
  1180.  
  1181.                                       - 74 -
  1182.          
  1183.          
  1184.  
  1185.                Ä»¿ßá¡¿Ñ.
  1186.             
  1187.                öπ¡¬µ¿∩  clearerr »ÑαÑπßΓá¡áó½¿óáÑΓ ñ½∩ »«Γ«¬á stream ¿¡ñ¿-
  1188.          ¬áΓ«α «Φ¿í¬¿ ¿ ¿¡ñ¿¬áΓ«α ¬«¡µá Σá⌐½á (EOF) ó 0. ê¡ñ¿¬áΓ«αδ «Φ¿í«¬
  1189.          áóΓ«¼áΓ¿τÑ߬¿ ¡Ñ «τ¿ΘáεΓß∩; Ñß½¿ ñ½∩ »«Γ«¬á πßΓá¡«ó½Ñ¡  ¿¡ñ¿¬áΓ«α
  1190.          «Φ¿í¬¿,  Γ« «»Ñαᵿ¿ ¡áñ »«Γ«¬«¼ íπñπΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩ «Φ¿í«¬
  1191.          ñ« ΓÑσ »«α, »«¬á Σπ¡¬µ¿¿ clearerr ¿½¿ rewind ¡Ñ íπñπΓ óδºóá¡δ.
  1192.                æ¼. ΓᬪѠΣπ¡¬µ¿¿ eof, feof, ferror, perror.
  1193.             
  1194.                Åα¿¼Ñα:
  1195.             
  1196.             #include <stdio.h>
  1197.             #include <stdlib.h>
  1198.             
  1199.             FILE *stream;
  1200.             int c;
  1201.  
  1202.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ τ¿ΓáεΓ ñá¡¡δÑ ¿º »«Γ«¬á ¿ »α«óÑα∩εΓ,
  1203.          ó«º¡¿¬½á ¿½¿ ¡ÑΓ «Φ¿í¬á »α¿ τΓÑ¡¿¿. ÅÑαÑñ  τΓÑ¡¿Ñ¼  »«Γ«¬  ñ«½ªÑ¡
  1204.          íδΓ∞ »αÑñóáα¿Γѽ∞¡« «Γ¬αδΓ */.
  1205.             if ((c=getc(stream))==EOF)
  1206.             {  if (ferror(stream))
  1207.                {  fprintf(stderr, "write error\n");
  1208.                   clearerr(stream);
  1209.                }
  1210.             }
  1211.             
  1212.       
  1213.             CLOSE.
  1214.                     
  1215.             #include <io.h>     ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1216.                                 Σπ¡¬µ¿¿.
  1217.             int close(handle);
  1218.             int handle;         handle-α,  ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1219.                                 Σá⌐½.
  1220.             
  1221.                Ä»¿ßá¡¿Ñ.
  1222.             
  1223.                öπ¡¬µ¿∩   close  ºá¬αδóáÑΓ  óßÑ  Σá⌐½δ,  áßß«µ¿¿α«óá¡¡δÑ  ß
  1224.          handle.
  1225.             
  1226.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1227.             
  1228.                ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ 0, Ñß½¿ Σá⌐½ πß»ÑΦ¡« ºá¬αδΓ. é«ºóαá-
  1229.          ΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ; Σπ¡¬µ¿∩ errno πßΓá-
  1230.          ¡áó½¿óáÑΓß∩ ó EBADF, τΓ« ßó¿ñÑΓѽ∞ßΓóπÑΓ « ¡Ñ»αáó¿½∞¡«¼ áαúπ¼Ñ¡ΓÑ
  1231.          handle-αá Σá⌐½á.
  1232.                æ¼. ΓᬪѠchsize, creat, dup, dup2, open, unlink.
  1233.             
  1234.                Åα¿¼Ñα:
  1235.             
  1236.             #include <io.h>
  1237.             #include <fcntl.h>
  1238.             
  1239.  
  1240.                                       - 75 -
  1241.          
  1242.          
  1243.             int fh;
  1244.             
  1245.             fh = open("data", O_RDONLY);
  1246.             .
  1247.             .
  1248.             .
  1249.             close(fh);.
  1250.             
  1251.             
  1252.                _CONTROL87
  1253.             
  1254.             #include <float.h>
  1255.             
  1256.             unsigned int _control87(new,mask); »«½πτáÑΓ ß½«ó« π»-
  1257.                                                αáó½Ñ¡¿∩ »½áóáεΘÑ⌐
  1258.                                                Γ«τ¬¿
  1259.             
  1260.             unsigned int new;                  ¡«óδÑ    º¡áτÑ¡¿∩
  1261.                                                í¿Γ«ó       ß½«óá
  1262.                                                π»αáó½Ñ¡¿∩
  1263.             
  1264.             unsigned int mask;                 πßΓá¡áó½¿óáѼá∩
  1265.                                                ¼á߬ᠠ ñ½∩ ¡«óδσ
  1266.                                                í¿Γ«ó ß½«óá π»αáó-
  1267.                                                ½Ñ¡¿∩
  1268.             
  1269.                Ä»¿ßá¡¿Ñ.
  1270.             
  1271.                öπ¡¬µ¿∩ _control87 »«½πτáÑΓ ¿ πßΓá¡áó½¿óáÑΓ ß½«ó«  π»αáó½Ñ-
  1272.          ¡¿∩  »½áóáεΘÑ⌐  Γ«τ¬¿. æ½«ó« π»αáó½Ñ¡¿∩ »½áóáεΘÑ⌐ Γ«τ¬¿ »«ºó«½∩ÑΓ
  1273.          ¿º¼Ñ¡∩Γ∞ ó »α«úαἼѠαѪ¿¼δ Γ«τ¡«ßΓ¿, «¬απú½Ñ¡¿∩ ¿  íÑ߬«¡Ñτ¡«ßΓ¿
  1274.          ñ½∩  ¼áΓѼáΓ¿τÑ߬«ú« »á¬ÑΓá »α«úαá¼¼ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. ê߬½ετ¿-
  1275.          Γѽ∞¡δÑ ß«ßΓ«∩¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ΓᬪѠ¼«ª¡« ¼á߬¿α«óáΓ∞  ¿½¿
  1276.          αẼá߬¿α«óáΓ∞, ¿ß»«½∞ºπ∩ ñ½∩ φΓ«ú« Σπ¡¬µ¿ε _control87.
  1277.                àß½¿  º¡áτÑ¡¿Ñ  ñ½∩ mask αáó¡« 0, Γ«úñá _control87 »«½πτáÑΓ
  1278.          ß½«ó« π»αáó½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. àß½¿ mask  ¡Ñ¡π½Ñóá∩,  πßΓá-
  1279.          ¡áó½¿óáÑΓß∩  ¡«ó«Ñ  º¡áτÑ¡¿Ñ ñ½∩ ß½«óá π»αáó½Ñ¡¿∩ ß½ÑñπεΘ¿¼ «íαá-
  1280.          º«¼: ñ½∩ ½εí«ú« í¿Γá αáó¡«ú« 1 ó mask ß««ΓóÑΓßΓóπεΘ¿⌐ í¿Γ  ó  new
  1281.          ¿ß»«½∞ºπÑΓß∩ ñ½∩ «í¡«ó½Ñ¡¿∩ ß½«óá π»αáó½Ñ¡¿∩ ß½«óἿ. ¥Γ« ºá»¿ßδ-
  1282.          óáÑΓß∩ Γá¬:
  1283.             
  1284.                 fpcntrl=((fpcntrl & ~mask) : (new & mask)),
  1285.       
  1286.          úñÑ fpcntrl ∩ó½∩ÑΓß∩ ß½«ó«¼ π»αáó½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
  1287.             
  1288.                 é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1289.             
  1290.                ü¿Γδ  ó ó«ºóαáΘáѼ«¼ º¡áτÑ¡¿¿ «í«º¡áτáεΓ ß«ßΓ«∩¡¿Ñ π»αáó½Ñ-
  1291.          ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. æ¼. include-Σá⌐½  <float.h>  ñ½∩  »«½¡«ú«
  1292.          «»¿ßá¡¿∩ í¿Γ«ó, ó«ºóαáΘáѼδσ _control87.
  1293.                æ¼.ΓᬪѠ_clear87, _status87.
  1294.             
  1295.             
  1296.             
  1297.  
  1298.                                       - 76 -
  1299.          
  1300.                Åα¿¼Ñα:
  1301.          
  1302.             #include <stdio.h>
  1303.             #include<float.h>
  1304.  
  1305.             double a = .1;
  1306.             
  1307.             main()
  1308.                {
  1309.                /* »«½πτáÑΓ ß½«ó« π»αáó½Ñ¡¿∩ */
  1310.                printf("control=%.4x\n", _control87(0,0));
  1311.                printf("a*a=.01=%.15e\n",a*a);
  1312.             
  1313.                /* πßΓá¡áó½¿óáÑΓ Γ«τ¡«ßΓ∞ ó 24 í¿Γá */
  1314.                _control87(PC_24, MCW_PC);
  1315.                printf("a*a=.01(rounded to 24 bits)=%.15e\n",a*a);
  1316.             
  1317.                /* ó«ßßΓá¡áó½¿óáÑΓ ¬ »Ñαó«¡áτá½∞¡«¼π π¼«½τá¡¿ε */
  1318.                _control87(CW_DEFAULT, 0xffff);
  1319.                printf("a*a=.01=%.15e\n",a*a);
  1320.                }
  1321.             
  1322.       
  1323.                COS-COSH
  1324.             
  1325.             #include <math.h>
  1326.             
  1327.             double cos(x);      óδτ¿ß½∩ÑΓ ¬«ß¿¡πß x
  1328.             double cosh(x);     óδτ¿ß½∩ÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß
  1329.                                 x
  1330.             double x;           αáñ¿á¡
  1331.             
  1332.                Ä»¿ßá¡¿Ñ.
  1333.            
  1334.                öπ¡¬µ¿¿  cos ¿ cosh ó«ºóαáΘáεΓ ß««ΓóÑΓßΓóÑ¡¡« ¬«ß¿¡πß ¿ ú¿-
  1335.          »Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß x.
  1336.             
  1337.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1338.             
  1339.                öπ¡¬µ¿∩ cos ó«ºóαáΘáÑΓ ¬«ß¿¡πß x. àß½¿ x í«½∞Φ«⌐, ó αѺπ½∞-
  1340.          ΓáΓÑ ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ τáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿. é φΓ«¼  ß½πτáÑ
  1341.          cos  óδαáíáΓδóáÑΓ  «Φ¿í¬π PLOSS, ¡« ß««íΘÑ¡¿∩ ¡Ñ »ÑτáΓáÑΓ. àß½¿ x
  1342.          ¡áßΓ«½∞¬« í«½∞Φ«⌐, τΓ« ΓÑα∩ÑΓß∩ «íΘá∩ º¡áτ¿¼«ßΓ∞  αѺπ½∞ΓáΓá,  Γ«
  1343.          cos »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ TLOSS ó stderr ¿ ó«ºóαáΘáÑΓ 0. é
  1344.          «í«¿σ ß½πτá∩σ errno πßΓá¡áó½¿óáÑΓß∩ ó ERANGE.
  1345.                öπ¡¬µ¿∩ cosh ó«ºóαáΘáÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß x. àß½¿ αÑ-
  1346.          ºπ½∞ΓáΓ  í«½∞Φ«⌐,  cosh  ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ HUGE ¿ πßΓá¡áó½¿óáÑΓ
  1347.          errno ó ERANGE.
  1348.                Äíαaí«Γ¬a «Φ¿í«¬  ¼«ªÑΓ  íδΓ∞  ¼«ñ¿Σ¿µ¿α«óa¡a  »α¿  ¿ß»«½∞-
  1349.          º«óa¡¿¿ »α«µÑñπαδ matherr.
  1350.                æ¼.ΓᬪѠ acos, asin, atan, atan2, matherr, sin, sinh, tan,
  1351.          tanh.
  1352.             
  1353.                Åα¿¼Ñα:
  1354.             
  1355.             #include <math.h>
  1356.             
  1357.  
  1358.                                       - 77 -
  1359.          
  1360.          
  1361.             double x,y;
  1362.             .
  1363.             .
  1364.             .
  1365.             
  1366.             y = cos(x);
  1367.             y = cosh(x);
  1368.             
  1369.       
  1370.                CPRINTF
  1371.             
  1372.            #include <conio.h>      ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1373.                                    Σπ¡¬µ¿¿
  1374.            int cprintf(format-string[,argument...]);
  1375.            char *format-string;   ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
  1376.  
  1377.                Ä»¿ßá¡¿Ñ.
  1378.             
  1379.                öπ¡¬µ¿∩ cprints Σ«α¼áΓ¿απÑΓ ¿ »ÑτáΓáÑΓ αẽ¿τ¡δÑ ß¿¼ó«½δ  ¿
  1380.          º¡áτÑ¡¿∩ »α∩¼« ¡á ¬«¡ß«½∞, ¿ß»«½∞ºπ∩ ñ½∩ óδó«ñ¿¼δσ ß¿¼ó«½«ó Σπ¡¬-
  1381.          µ¿ε  putch.  èáªñδ⌐  arguments (Ñß½¿ «¡ ÑßΓ∞) »αÑ«íαẫóδóáÑΓß∩ ¿
  1382.          óδó«ñ¿Γß∩  ß«ú½áß¡«  ß««ΓóÑΓßΓóπεΘÑ⌐   ß»Ñµ¿Σ¿¬áµ¿¿   Σ«α¼áΓá   ó
  1383.          format-string.  Format-string  ¿¼ÑÑΓ Γπ ªÑ ßá¼πε Σ«α¼π ¿ Σπ¡¬µ¿ε,
  1384.          τΓ« ¿ áαúπ¼Ñ¡Γ format-string ñ½∩ Σπ¡¬µ¿¿ printf (æ¼.«»¿ßá¡¿Ñ Σπ¡-
  1385.          ¬µ¿¿ printf ñ½∩ »«½πτÑ¡¿∩ »«ñα«í¡«⌐ ¿¡Σ«α¼áµ¿¿ « format-string  ¿
  1386.          áαúπ¼Ñ¡Γáσ).
  1387.             
  1388.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1389.             
  1390.                öπ¡¬µ¿∩ cprintf ó«ºóαáΘáÑΓ τ¿ß½« ¡á»ÑτáΓá¡¡δσ ß¿¼ó«½«ó.
  1391.                æ¼.ΓᬪѠfprintf, printf, sprintf, vprintf.
  1392.                çá¼Ñτá¡¿Ñ!  é «Γ½¿τ¿¿ «Γ Σπ¡¬µ¿⌐ sprintf, printf ¿ sprintf,
  1393.          Σπ¡¬µ¿∩ cprintf ¡á óδσ«ñÑ ¡Ñ Γαá¡ß½¿απÑΓ ß¿¼ó«½δ Åæ ó  ¬«¼í¿¡áµ¿ε
  1394.          "éè-Åæ".
  1395.             
  1396.                Åα¿¼Ñα:
  1397.       
  1398.             #include <conio.h>
  1399.             
  1400.             int i=-16, j=29;
  1401.             unsigned int k=511;
  1402.             
  1403.            /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¡á»ÑτáΓáÑΓ i = -16, j = 0x1d, k = 511 */
  1404.             cprintf("i=%d, j=%#x, k=%u\n", i,j,k);
  1405.             
  1406.             
  1407.                CPUTS
  1408.             
  1409.             #include <conio.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1410.                                    Σπ¡¬µ¿¿
  1411.             
  1412.             void cputs(str);
  1413.             char *str;             π¬áºáΓѽ∞ ¡á óδó«ñ¿¼πε ßΓ᫬π
  1414.             
  1415.  
  1416.                                       - 78 -
  1417.          
  1418.          
  1419.                Ä»¿ßá¡¿Ñ.
  1420.             
  1421.                öπ¡¬µ¿∩  cputs  ºá»¿ßδóáÑΓ  ßΓ᫬π,  «¬á¡τ¿óáεΘπεß∩ ¡π½Ñóδ¼
  1422.          ß¿¼ó«½«¼ ¿ ¡á ¬«Γ«απε π¬áºδóáÑΓ str, »α∩¼« ¡á ¬«¡ß«½∞.
  1423.                çá¼Ñτá¡¿Ñ. é ßΓα«¬Ñ ¬«¼í¿¡áµ¿∩ "髺óαáΓ ¬áαÑΓ¬¿  -  ÅÑαÑó«ñ
  1424.          ßΓ᫬¿" »«ß½Ñ ºá»¿ß¿ áóΓ«¼áΓ¿τÑ߬¿ ¡Ñ »«∩ó½∩ÑΓß∩.
  1425.             
  1426.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1427.             
  1428.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1429.            
  1430.                æ¼.ΓᬪѠputch.
  1431.             
  1432.                Åα¿¼Ñα:
  1433.             
  1434.             #include <conio.h>
  1435.             
  1436.             char *buffer = "Insert data disk in drive a: \r\n";
  1437.             
  1438.             /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδó«ñ¿Γ »«ñ߬Ậπ ¡á ¬«¡ß«½∞ */.
  1439.             
  1440.             cputs(buffer);.
  1441.             
  1442.                CREAT
  1443.             
  1444.             #include <sys\types.h>
  1445.             #include <sys\stat.h>
  1446.             #include <io.h>       ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1447.                                   Σπ¡¬µ¿⌐.
  1448.                                   
  1449.             int creat(pathname, pmode);
  1450.             char *pathname;       path-¿¼∩ ¡«ó«ú« Σá⌐½á
  1451.             int pmode;            αáºαÑΦÑ¡¡δ⌐ αѪ¿¼ ñ«ßΓπ»á
  1452.                           
  1453.                Ä»¿ßá¡¿Ñ.
  1454.             
  1455.                öπ¡¬µ¿∩ creat ½¿í« ß«ºñáÑΓ ¡«óδ⌐ Σá⌐½, ½¿í« «Γ¬αδóáÑΓ ¿ «í-
  1456.          ¡«ó½∩ÑΓ  (πßѬáÑΓ  ñ« ñ½¿¡δ 0) ßπΘÑßΓóπεΘ¿⌐ Σá⌐½. àß½¿ ßπΘÑßΓóπÑΓ
  1457.          Σá⌐½, «»αÑñѽ∩Ѽδ⌐ path-¿¼Ñ¡Ñ¼, Γ« ß«ºñáÑΓß∩ ¡«óδ⌐ Σá⌐½ ß  ºáñá¡-
  1458.          ¡δ¼  αѪ¿¼«¼  ñ«ßΓπ»á ¿ ∩ó½∩εΘ¿⌐ß∩ «Γ¬αδΓδ¼ ñ½∩ ºá»¿ß¿. àß½¿ Σá⌐½
  1459.          ßπΘÑßΓóπÑΓ ¿ Ñú« αѪ¿¼ ñ«ßΓπ»á »«ºó«½∩ÑΓ  ºá»¿ß∞,  Γ«úñá  Σπ¡¬µ¿∩
  1460.          creat  πßѬáÑΓ Σá⌐½ ¬ ñ½¿¡Ñ 0, π¡¿τΓ«ªá∩ óßÑ ß«ñÑন¼«Ñ, ¿ «ñ¡«ó-
  1461.          αѼѡ¡« «Γ¬αδóáÑΓ Σá⌐½.
  1462.                ÉáºαÑΦÑ¡¡δ⌐ αѪ¿¼ ñ«ßΓπ»á - pmode - »α¿¼Ñ¡∩ÑΓß∩ Γ«½∞¬«  ñ½∩
  1463.          ó¡«ó∞  ß«ºñá¡¡δσ  Σá⌐½«ó. ì«óδ⌐ Σá⌐½ »«½πτáÑΓ πßΓá¡«ó½Ñ¡¡δ⌐ αѪ¿¼
  1464.          ñ«ßΓπ»á »«ß½Ñ »Ñαó«ú« Ñú« ºá¬αδΓ¿∩. ûѽ«Ñ óδαáªÑ¡¿Ñ pmode ß«ßΓ«¿Γ
  1465.          ¿º  «ñ¡«⌐  ¿½¿  ¡Ñ߬«½∞¬¿σ  ¼á¡¿ΣÑßΓ¡δσ  ¬«¡ßΓá¡Γ  -  S_IWRITE  ¿
  1466.          S_IREAD,  «íΩ∩ó½Ñ¡¡δσ  ó <sys\stat.h>. àß½¿ ºáñáεΓß∩ «íÑ ¬«¡ßΓá¡Γδ,
  1467.          «¡¿ «íΩÑñ¿¡∩εΓß∩ »α¿ »«¼«Θ¿ ½«ú¿τÑ߬«ú« OR (:). ç¡áτÑ¡¿Ñ áαúπ¼Ñ¡-
  1468.          Γá pmode »α¿ó«ñ¿Γß∩ ¡¿ªÑ.
  1469.             
  1470.             èÄìæÆÇìÆÇ              æî¢æïÄéÄà  çìÇùàìêà
  1471.                                  
  1472.             S_IWRITE               αáºαÑΦáÑΓ ºá»¿ß∞
  1473.             
  1474.             S_IREAD                αáºαÑΦáÑΓ τΓÑ¡¿Ñ
  1475.  
  1476.                                       - 79 -
  1477.          
  1478.          
  1479.             
  1480.             S_IREAD:S_IWRITE       αáºαÑΦáεΓ τΓÑ¡¿Ñ ¿ ºá»¿ß∞
  1481.                                 
  1482.                àß½¿ ºá»¿ß∞ ¡Ñ αáºαÑΦÑ¡á, Σá⌐½ »αÑñ¡áº¡áτÑ¡ Γ«½∞¬« ñ½∩ τΓÑ-
  1483.          ¡¿∩. é MS DOS ¡Ñ½∞º∩  αáºαÑΦ¿Γ∞  Γ«½∞¬«  ºá»¿ß∞.  Å«φΓ«¼π  αѪ¿¼δ
  1484.          S_IWRITE ¿ S_IREAD: S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
  1485.                é óÑαß¿∩σ MS DOS 3.0 ¿ ßΓáαΦ¿σ Σá⌐½δ, «Γ¬αδóáѼδÑ »α¿ »«¼«-
  1486.          Θ¿  creat, óßÑúñá «Γ¬αδóáεΓß∩ ó ß«ó¼ÑΘÑ¡¡«¼ αѪ¿¼Ñ (compatibility
  1487.          mode).
  1488.                öπ¡¬µ¿∩ creat »ÑαÑñ πßΓá¡«ó¬«⌐  Σ½áúá  ñ«ßΓπ»á  »α¿ßóá¿óáÑΓ
  1489.          pmode ¼á߬Ѡñ«ßΓπ»á (»«ñα«í¡« «í φΓ«¼ ß¼«Γα¿ΓÑ umask).
  1490.             
  1491.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1492.             
  1493.                é  ß½πτáÑ πß»ÑΦ¡«ú« ó맮óá φΓá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ handle ¡á
  1494.          ß«ºñá¡¡δ⌐ Σá⌐½. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í-
  1495.          ¬Ñ; errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  1496.             
  1497.             
  1498.             éÄçéÉÇÖÇàîǃ              æî¢æïÄéÄà  çìÇùàìêà
  1499.             éàïêùêìÇ
  1500.       
  1501.             EACCES           Path-¿¼∩   «»αÑñѽ∩ÑΓ    ßπΘÑßΓóπεΘ¿⌐
  1502.                              Σá⌐½   Γ«½∞¬«   ñ½∩    τΓÑ¡¿∩     ¿½¿
  1503.                              «»αÑñѽ∩ÑΓ ñ¿αÑ¬Γ«α¿⌐ ó¼ÑßΓ« Σá⌐½á
  1504.             
  1505.             EMFILE           ñαπú¿Ñ  handle-αδ  Σá⌐½á ¡Ñ »α¿ú«ñ¡δ,
  1506.                              Γ.¬. ¼¡«ú« «Γ¬αδΓδσ Σá⌐½«ó
  1507.             
  1508.             ENOENT           path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  1509.       
  1510.                æ¼. ΓᬪѠchmod, chsize, close,  dup,  dup2,  open,  sopen,
  1511.          umask.
  1512.                çá¼Ñτá¡¿Ñ.  Åα«µÑñπαá  create  «íÑß»Ñτ¿óáÑΓ  »Ñαó«¡áτá½∞¡πε
  1513.          ß«ó¼ÑßΓ¿¼«ßΓ∞ ß »αÑñδñπΘ¿¼¿ í¿í½¿«ΓѬἿ. é맮ó open  »α¿  »«¼«Θ¿
  1514.          º¡áτÑ¡¿⌐ O_CREAT ¿ O_TRUNC, «»αÑñѽѡ¡δσ ó áαúπ¼Ñ¡ΓÑ oflag, ∩ó½∩-
  1515.          ÑΓß∩ º¬ó¿óá½Ñ¡Γ¡δ¼ ¿ »αÑñ»«τΓ¿Γѽ∞¡δ¼ ñ½∩ ¡«ó«ú« ¬«ñá.
  1516.             
  1517.                Åα¿¼Ñα:
  1518.             
  1519.             #include <sys\types.h>
  1520.             #include <sys\stat.h>
  1521.             #include <io.h>
  1522.             #include <stdlib.h>
  1523.             
  1524.             int fh;
  1525.             
  1526.             fh = creat("data", S_IREAD|S_IWRITE);
  1527.             
  1528.             if (fh == -1)
  1529.                 perror("Couldn't create data file");.
  1530.             
  1531.             
  1532.             
  1533.  
  1534.                                       - 80 -
  1535.          
  1536.                CSCANF
  1537.          
  1538.             #include <conio.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1539.                                    Σπ¡¬µ¿¿
  1540.             
  1541.             int cscanf(format-string[,argument...]);
  1542.             char *format-string;   ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
  1543.             
  1544.                Ä»¿ßá¡¿Ñ.
  1545.       
  1546.                öπ¡¬µ¿∩ cscanf τ¿ΓáÑΓ ñá¡¡δÑ »α∩¼« ß ¬«¡ß«½¿ ó ¼ÑßΓ«, ºáñá-
  1547.          óáѼ«Ñ  arguments  (Ñß½¿ «¡¿ ÑßΓ∞), ¿ß»«½∞ºπ∩ ñ½∩ τΓÑ¡¿∩ ß¿¼ó«½«ó
  1548.          Σπ¡¬µ¿ε getch. èáªñδ⌐ áαúπ¼Ñ¡Γ argument ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ ¡á
  1549.          »ÑαѼѡ¡πε ß Γ¿»«¼, ¬«Γ«αδ⌐ ß««ΓóÑΓßΓóπÑΓ  «»αÑñѽѡ¡«¼π  Γ¿»π  ó
  1550.          format-string. Format-string π»αáó½∩ÑΓ ¿¡ΓÑα»αÑΓᵿÑ⌐ »«½Ñ⌐ óó«ñá
  1551.          ¿  ¿¼ÑÑΓ  Γπ ªÑ ßá¼πε Σ«α¼π ¿ Σπ¡¬µ¿ε, τΓ« áαúπ¼Ñ¡Γ format-string
  1552.          ñ½∩ Σπ¡¬µ¿¿ scanf (ß¼. «»¿ßá¡¿Ñ Σπ¡¬µ¿¿ scanf ñ½∩ »«½πτÑ¡¿∩  »«ñ-
  1553.          α«í¡«⌐ ¿¡Σ«α¼áµ¿¿ « format-string).
  1554.             
  1555.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1556.             
  1557.                öπ¡¬µ¿∩  scanf  ó«ºóαáΘáÑΓ  τ¿ß½« πß»ÑΦ¡« »αÑ«íαẫóá¡¡δσ ¿
  1558.          ¡áº¡áτÑ¡¡δσ »«½Ñ⌐. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡Ñ ß«ñÑαª¿Γ »α«τ¿Γá¡¡δσ,
  1559.          ¡« ¡Ñ ¡áº¡áτÑ¡¡δσ »«½Ñ⌐. Åα¿ »«»δΓ¬Ñ τΓÑ¡¿∩ ¬«¡µá Σá⌐½á ó«ºóαáΘá-
  1560.          ÑΓß∩ º¡áτÑ¡¿Ñ EOF. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ 0 «º¡áτáÑΓ,  τΓ«  ¡áº¡á-
  1561.          τÑ¡¡δσ »«½Ñ⌐ ¡ÑΓ.
  1562.                æ¼.ΓᬪѠfscanf, scanf, sscanf.
  1563.             
  1564.                Åα¿¼Ñα:
  1565.             
  1566.             #include <conio.h>
  1567.             
  1568.             int result;
  1569.             char buffer [20];
  1570.             .
  1571.             .
  1572.             .
  1573.             cprintf("Please enter file name: ");
  1574.             
  1575.          /*  ß½ÑñπεΘ¿⌐  «»ÑαáΓ«α  ºá»«¼¿¡áÑΓ  óóÑñÑ¡¡πε ß ¬½áó¿áΓπαδ
  1576.          ßΓ᫬π */
  1577.             
  1578.             result = csanf("%19s", buffer);
  1579.             
  1580.          /* result - τ¿ß½« óÑα¡« óóÑñÑ¡¡δσ »«½Ñ⌐. Ä¡ αáóÑ¡  0,  Ñß½¿
  1581.          ¡ÑΓ ß««ΓóÑΓßΓó¿∩ */
  1582.             
  1583.       
  1584.                CTIME
  1585.             
  1586.             #include <time.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1587.                                 Σπ¡¬µ¿¿
  1588.             char *ctime(time);
  1589.             long *time;         π¬áºáΓѽ∞ ¡á σαá¡¿¼«Ñ óαѼ∩
  1590.             
  1591.            
  1592.  
  1593.                                       - 81 -
  1594.          
  1595.                Ä»¿ßá¡¿Ñ.
  1596.          
  1597.                öπ¡¬µ¿∩  ctime »αÑ«íαáºπÑΓ óαѼ∩, σαá¡¿¼«Ñ ¬á¬ long- º¡áτÑ-
  1598.          ¡¿Ñ, ó ß¿¼ó«½∞¡πε ßΓ᫬π. ç¡áτÑ¡¿Ñ time «íδτ¡« »«½πτáÑΓß∩ ¿º  óδ-
  1599.          º«óá Σπ¡¬µ¿¿ time, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ¬«½¿τÑßΓó« ßѬπ¡ñ, »α«⌐ñÑ¡-
  1600.          ¡δσ «Γ º¡áτÑ¡¿∩ óαѼѡ¿ »« âα¿¡ó¿τπ, Γ.Ñ. ß 1 ∩¡óáα∩ 1980 ú«ñá.
  1601.                æΓα«¬á  αѺπ½∞ΓáΓá, óδαáí«Γá¡¡á∩ »« ctime, ß«ñÑαª¿Γ 26 ß¿¼-
  1602.          ó«½«ó ¿ ¿¼ÑÑΓ Σ«α¼π, »α¿óÑñÑ¡¡πε ¡¿ªÑ ó »α¿¼ÑαÑ:
  1603.                 
  1604.                Mon Jan 02 02:03:55 1980\n\0
  1605.                 
  1606.                êß»«½∞ºπÑΓß∩ 24 τáßá. éßÑ  »«½∩  ¿¼ÑεΓ  »«ßΓ«∩¡¡πε  Φ¿α¿¡π.
  1607.          æ¿¼ó«½  ¡«ó«⌐ ßΓ᫬¿ ('\n') ¿ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0') ºá¡¿¼áεΓ  ñóÑ
  1608.          »«ß½Ññ¡¿Ñ »«º¿µ¿¿ ó ßΓ᫬Ñ.
  1609.                é MS DOS ñáΓδ αá¡∞ΦÑ 1980 ú«ñá  ¡Ñ  »«¡¿¼áεΓß∩.  àß½¿  time
  1610.          »αÑñßΓáó½∩ÑΓ ñáΓπ »ÑαÑñ 1 ∩¡óáα∩ 1980 ú«ñá, ctime ó«ºóαáΘáÑΓ ß¿¼-
  1611.          ó«½∞¡πε ßΓ᫬π, »αÑñßΓáó½Ñ¡¡πε 00:00:00 January 1,1980.
  1612.             
  1613.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1614.             
  1615.                öπ¡¬µ¿∩ ctime ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ß¿¼ó«½∞¡πε ßΓ᫬π αÑ-
  1616.          ºπ½∞ΓáΓá. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  1617.                æ¼.ΓᬪѠasctime, ftime, gmtime, localtime, time.
  1618.             
  1619.                çá¼Ñτá¡¿Ñ. öπ¡¬µ¿¿ asctime ¿ ctime ¿ß»«½∞ºπεΓ «ñ¿¡ ¿ Γ«Γ ªÑ
  1620.          ßΓáΓ¿ßΓ¿τÑ߬¿ ºáσóáτÑ¡¡δ⌐ íπΣÑα ñ½∩ σαá¡Ñ¡¿∩ ó ¡Ñ¼ ßΓ᫬¿ αѺπ½∞-
  1621.          ΓáΓá.  èáªñδ⌐  óδº«ó  «ñ¡«⌐ ¿º φΓ¿σ »α«µÑñπα π¡¿τΓ«ªáÑΓ αѺπ½∞ΓáΓ
  1622.          »αÑñδñπΘÑú« ó맮óá.
  1623.             
  1624.                Åα¿¼Ñα:
  1625.             
  1626.             #include <time.h>
  1627.             #include <stdio.h>
  1628.             
  1629.             long time;
  1630.             
  1631.             time(<ime);
  1632.             printf("the time is %s\n",ctime(<ime));
  1633.             
  1634.       
  1635.                DIIEEETOMSBIN-DMSBINTOIEEE
  1636.             
  1637.             
  1638.             #include <math.h>
  1639.             
  1640.             int dieeetomsbin(src8,dst8); »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐
  1641.                                          Γ«τ¡«ßΓ¿ Σ«α¼áΓá  IEEE  ¬
  1642.                                          ñó«¿τ¡«¼π ñó«⌐¡«¼π Σ«α¼á-
  1643.                                          Γπ MS
  1644.             
  1645.             int dmsbintoieee(src8,dst8); »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐
  1646.                                          Γ«τ¡«ßΓ¿ ó  Σ«α¼áΓÑ  MS ¬
  1647.                                          τ¿ß½π ó Σ«α¼áΓÑ IEEE
  1648.             
  1649.                Ä»¿ßá¡¿Ñ.
  1650.             
  1651.                Åα«µÑñπαá dieeetomsbin »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿ ó
  1652.  
  1653.                                       - 82 -
  1654.          
  1655.          
  1656.          Σ«α¼áΓÑ IEEE ¬ ñó«¿τ¡«¼π Σ«α¼áΓπ Microsoft.
  1657.                Åα«µÑñπαá dmsbintoieee »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿ ó
  1658.          ñó«¿τ¡«¼ Σ«α¼áΓÑ Microsoft ¬ IEEE Σ«α¼áΓπ.
  1659.                ¥Γ¿ »α«µÑñπαδ »«ºó«½∩εΓ »α«úαἼἠæ¿,  ¬«Γ«αδÑ  ºá»¿ßδóáεΓ
  1660.          τ¿ß½á  ß  »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó Σ«α¼áΓÑ IEEE, ¿ß»«½∞º«óáΓ∞ τ¿ß½Ñ¡¡δÑ
  1661.          ñá¡¡δÑ ó »«½∩σ ñá¡¡δσ ß½πτá⌐¡«ú« ñ«ßΓπ»á,  ß«ºñá¡¡δÑ  »α¿  »«¼«Θ¿
  1662.          Microsoft  BASIC,  ¬«Γ«αδ⌐  ºá»¿ßδóáÑΓ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó
  1663.          ñó«¿τ¡δ⌐ Σ«α¼áΓ Microsoft ¿ ¡á«í«α«Γ.
  1664.                Çαúπ¼Ñ¡Γ  src8   ∩ó½∩ÑΓß∩   π¬áºáΓѽѼ   ¡á   »αÑ«íαáºπѼ«Ñ
  1665.          double-º¡áτÑ¡¿Ñ.  ÉѺπ½∞ΓáΓ ºá»¿ßδóáÑΓß∩ ó αáß»«½«ªÑ¡¿Ñ, ºáñá¡¡«Ñ
  1666.          áαúπ¼Ñ¡Γ«¼ dst8.
  1667.             
  1668.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1669.             
  1670.                ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ 0, Ñß½¿ »αÑ«íαẫóá¡¿Ñ  í佫  πß»ÑΦ-
  1671.          ¡δ¼, ¿ 1 - Ñß½¿ »αÑ«íαẫóá¡¿Ñ »«ó½Ñ¬½« »ÑαÑ»«½¡Ñ¡¿Ñ.
  1672.                æ¼.ΓᬪѠfieeetomsbin, fmsbintoieee.
  1673.             
  1674.                çá¼Ñτá¡¿Ñ.  ¥Γ¿ »α«µÑñπαδ ¡Ñ «íαáíáΓδóáεΓ IEEE NAN ¿ íÑ߬«-
  1675.          ¡Ñτ¡«ßΓ∞. ìÑ«íδτ¡δÑ IEEE Γαá¬ΓπεΓß∩ ó »αÑ«íαẫóá¡¿∩σ ¬á¬ 0.
  1676.             
  1677.       
  1678.                DIFFTIME
  1679.             
  1680.             
  1681.             #include <time.h>   ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1682.                                 Σπ¡¬µ¿¿
  1683.             
  1684.             double difftime(time2,time1);
  1685.             time_t time2;       Γ¿» time_t, «íΩ∩ó½Ñ¡¡δ⌐ ó <time.h>
  1686.             
  1687.             
  1688.                Ä»¿ßá¡¿Ñ.
  1689.             
  1690.                öπ¡¬µ¿∩ difftime óδτ¿ß½∩ÑΓ αạ«ßΓ∞ ¼Ñªñπ time2 ¿ time1.
  1691.             
  1692.             
  1693.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1694.             
  1695.                öπ¡¬µ¿∩ difftime ó«ºóαáΘáÑΓ »α«⌐ñÑ¡¡«Ñ óαѼ∩ ó ßѬπ¡ñáσ  «Γ
  1696.          time1 ñ« time2 ¬á¬ τ¿ß½« ß ñó«⌐¡«⌐ Γ«τ¡«ßΓ∞ε.
  1697.                æ¼.ΓᬪѠtime.
  1698.             
  1699.             
  1700.                Åα¿¼Ñα:
  1701.             
  1702.             #include <time.h>
  1703.             
  1704.             int mark[10000];
  1705.             
  1706.             main()
  1707.                 {
  1708.                /*  φΓ« - »α¿¼Ñα π»«ΓαÑí½Ñ¡¿∩ óαѼѡ¿ »«ßαÑñßΓó«¼ ¿ß»«½∞º«-
  1709.          óá¡¿∩ difftime. Ä¡á óδτ¿ß½∩ÑΓ, ß¬«½∞¬« óαѼѡ¿ Ñ⌐  »«ΓαÑí«óὫß∞,
  1710.          τΓ«íδ ¡á⌐Γ¿ »α«ßΓδÑ τ¿ß½á «Γ 3 ñ« 10000. ä½∩ óδó«ñá »α«ßΓ«ú« τ¿ß-
  1711.  
  1712.                                       - 83 -
  1713.          
  1714.          
  1715.          ½á  π¡¿τΓ«ªáÑΓß∩  ßá¼δ⌐  ó¡ÑΦ¡¿⌐ µ¿¬½ ¿ ¬«¼¼Ñ¡Γáα¿¿ «úαá¡¿τ¿ΓѽÑ⌐
  1716.          ó«¬απú "printf("%d\t",n);"*/
  1717.             
  1718.                 time_t start, finish;
  1719.                 register int i, loop, n, num, step;
  1720.             
  1721.                 time(&start);
  1722.                 for(loop=0; loop<1000; ++loop)
  1723.                    for(num=0,n=3;n<10000;n+=2)
  1724.                       if(!mark[n]) {
  1725.                           /* printf("%d\t",n); */
  1726.                           step=2*n;
  1727.                           for(i=3*n;i<10000;i+=step)
  1728.                                 mark[i]=-1;
  1729.                           ++num;
  1730.                           }
  1731.                 time(&finish);
  1732.             
  1733.                 /*  ó "sieve" »ÑτáÑΓß∩ ó ßαÑñ¡Ñ¼ 1000 µ¿¬½«ó */
  1734.             
  1735.       
  1736.                 printf("\nProgram takes %f seconds to find %d
  1737.                        primes.\n",
  1738.                        difftime(finish,start)/1000,num);
  1739.                 }
  1740.             
  1741.                ìá óδσ«ñÑ:
  1742.             
  1743.             Program takes 0.482000 seconds to find 1228 primes.
  1744.             
  1745.       
  1746.                DOSEXTERR
  1747.             
  1748.             
  1749.             #include <dos.h>
  1750.             
  1751.             int dosexterr(buffer);
  1752.             struct DOSERROR *buffer;
  1753.             
  1754.                Ä»¿ßá¡¿Ñ.
  1755.             
  1756.                öπ¡¬µ¿∩ dosexterr »«½πτáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá, ó«ºóαáΘáѼ«ú«
  1757.          ß¿ßΓѼ¡δ¼ óδº«ó«¼ MS DOS 59H, ¿ ºá»¿ßδóáÑΓ φΓ« º¡áτÑ¡¿Ñ ó  ßΓαπ¬-
  1758.          Γπαπ,  ¡á  ¬«Γ«απε  π¬áºδóáÑΓ  buffer. ¥Γá Σπ¡¬µ¿∩ »«½Ñº¡á, ¬«úñá
  1759.          ß¿ßΓѼ¡δÑ ó맮óδ óδαáíáΓδóáεΓß∩ ó óÑαß¿∩σ MS DOS 3.0 ¿ ßΓáαΦ¿σ  ¿
  1760.          ¬«Γ«αδÑ »αÑñ½áúáεΓ αáßΦ¿αÑ¡¡πε «íαáí«Γ¬π «Φ¿í«¬.  ü«½ÑÑ  »«ñα«í¡«
  1761.          ß¿ßΓѼ¡δÑ  ó맮óδ  MS DOS «»¿ßá¡δ ó απ¬«ó«ñßΓóÑ "Microsoft MS DOS
  1762.          Programmer's Reference Manual".
  1763.                Æ¿» ßΓαπ¬Γπαδ DOSERROR «íΩ∩ó½Ñ¡ ó  <dos.h>  ¿  »αÑñßΓáó½∩ÑΓ
  1764.          ß½ÑñπεΘÑÑ:
  1765.             
  1766.             struct DOSERROR {
  1767.                    int exterror;
  1768.                    char class;
  1769.                    char action;
  1770.  
  1771.                                       - 84 -
  1772.          
  1773.          
  1774.                    char locus;
  1775.                    };
  1776.             
  1777.                Çαúπ¼Ñ¡Γ  NULL-π¬áºáΓѽ∩ »«ßαÑñßΓó«¼ dosexterr «»αÑñѽ∩ÑΓ ó
  1778.          AX ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1779.             
  1780.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1781.             
  1782.                öπ¡¬µ¿∩ dosexterr ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ó αÑú¿ßΓα  AX  (¿ñÑ¡-
  1783.          Γ¿τ¡«   º¡áτÑ¡¿ε ó »«½Ñ ßΓαπ¬Γπαδ exterror).
  1784.                æ¼.ΓᬪѠperror.
  1785.             
  1786.                Åα¿¼Ñα:
  1787.             
  1788.             #include <dos.h>
  1789.             #include <fcntl.h>
  1790.             #include <stdio.h>
  1791.             
  1792.             struct DOSERROR doserror;
  1793.             int fd;
  1794.             
  1795.             if ((fd=open("test.dat",O_RDONLY))==-1 {
  1796.                dosexterr(&doserror);
  1797.                printf("error=%d,class=%d,action=%d,locus=%d\n",
  1798.                        doserror.exterror, doserror.class,
  1799.                        doserror.action, doserror.locus);
  1800.                }
  1801.                 
  1802.                
  1803.                DUP - DUP2
  1804.             
  1805.             #include <io.h>      ΓαÑíπÑΓß∩  Γ«½∞¬« ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1806.                                  Σπ¡¬µ¿⌐
  1807.  
  1808.             int dup(handle);     ß«ºñáÑΓ   óΓ«α«⌐   handle-α   ñ½∩
  1809.                                  «Γ¬αδΓ«ú« Σá⌐½á
  1810.             int handle;          handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1811.                                  Σá⌐½
  1812.             
  1813.             int dup2(handle1, handle2);
  1814.                                  Σ«αß¿απÑΓ handle1 ñ½∩  ßß佬¿  ¡á
  1815.                                  handle2 Σá⌐½á
  1816.             
  1817.             int handle1;         handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1818.                                  Σá⌐½
  1819.             int handle2;         ½εí«Ñ º¡áτÑ¡¿Ñ handle
  1820.             
  1821.                Ä»¿ßá¡¿Ñ.
  1822.             
  1823.                öπ¡¬µ¿¿  dup ¿ dup2 óδºδóáεΓ óΓ«α«⌐ handle-α Σá⌐½á, ßó∩ºá¡-
  1824.          ¡δ⌐ ß  «Γ¬αδΓδ¼  Σá⌐½«¼.  Ä»Ñαᵿ¿  ó  Σá⌐½Ñ  ¼«úπΓ  »ÑαÑßδ½áΓ∞ß∩
  1825.          handle-α«¼, Γ«úñᠬᬠóßÑ handle-αδ, ßó∩ºá¡¡δÑ ß ºáñá¡¡δ¼ Σá⌐½«¼,
  1826.          ¿ß»«½∞ºπεàëàªÑ ßá¼δ⌐ π¬áºáΓѽ∞ ¡á Σá⌐½. æ«ºñá¡¿Ñ ¡«ó«ú« handle
  1827.          ¡Ñ ó½¿∩ÑΓ ¡á Γ¿» ñ«ßΓπ»á Σá⌐½á.
  1828.                öπ¡¬µ¿∩ dup ó«ºóαáΘáÑΓ ß½ÑñπεΘ¿⌐ ñ«ßΓπ»¡δ⌐ handle-α ñ½∩ ºá-
  1829.  
  1830.                                       - 85 -
  1831.          
  1832.          
  1833.          ñá¡¡«ú«  Σá⌐½á.  öπ¡¬µ¿∩  dup2 Σ«αß¿απÑΓ (force) ºáñá¡¡δ⌐ handle,
  1834.          Γ.Ñ. handle2, τΓ«íδ ß«ß½áΓ∞ß∩ ¡á Γ«Γ ªÑ ßá¼δ⌐  Σá⌐½,  ¡á  ¬«Γ«αδ⌐
  1835.          ßßδ½áÑΓß∩ handle1. àß½¿ ó« óαѼ∩ ó맮óá handle2 ßó∩ºá¡ ß «Γ¬αδΓδ¼
  1836.          Σá⌐½«¼, Γ« φëàΣá⌐½ ºá¬αδóáÑΓß∩.
  1837.             
  1838.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1839.             
  1840.                öπ¡¬µ¿∩  dup  ó«ºóαáΘáÑΓ ¡«óδ⌐ handle-α Σá⌐½á. öπ¡¬µ¿∩ dup2
  1841.          ó«ºóαáΘáÑΓ 0 ó ß½πτáÑ πß»Ñσá. àß½¿ ó«º¡¿¬áÑΓ «Φ¿í¬á, «íÑ  Σπ¡¬µ¿¿
  1842.          ó«ºóαáΘáεΓ  -1 ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ-
  1843.          ¡¿⌐.
  1844.             
  1845.             éàïêùêìÇ                 æî¢æïÄéÄà  çìÇùàìêà
  1846.             
  1847.             EBADF               ìÑóÑα¡δ⌐ handle-α Σá⌐½á
  1848.             
  1849.             EMFILE              äαπú¿Ñ   handle-αδ Σá⌐½á  ñ½∩ ¡Ñú«
  1850.                                 ¡Ñ ñ«ßΓπ»¡δ, Γ.¬.  ¼¡«ú«  «Γ¬αδΓδσ
  1851.                                 Σá⌐½«ó
  1852.  
  1853.                æ¼. ΓᬪѠclose, creat, open.
  1854.             
  1855.  
  1856.                Åα¿¼Ñα:
  1857.             
  1858.             #include <io.h>
  1859.             #include <stdlib.h>
  1860.       
  1861.             int fh;
  1862.             .
  1863.             .
  1864.             .
  1865.                /* óδí¿αáÑΓ ñαπú«⌐ handle-α Σá⌐½á, τΓ«íδ ß«ß½áΓ∞ß∩  ¡á  Γ«Γ
  1866.          ªÑ ßá¼δ⌐ Σá⌐½, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ handle1 (stdout) */
  1867.             
  1868.             fh = dup(1);
  1869.             
  1870.             if (fh == -1)
  1871.                perror("dup(1) failure");
  1872.             
  1873.                /*  ß«ºñáÑΓ  handle3 Σá⌐½á ñ½∩ ßß佬¿ ¡á Γ«Γ ªÑ ßá¼δ⌐ Σá⌐½,
  1874.          ¡á ¬«Γ«αδ⌐ ßßδ½áÑΓß∩ handle 1 (stdout). àß½¿ handle3 Σá⌐½á  ∩ó½∩-
  1875.          ÑΓß∩ ΓᬪѠ«Γ¬αδΓδ¼, «¡ ºá¬αδóáÑΓß∩ »Ñαóδ¼ */
  1876.             
  1877.             fh = dup2(1,3);
  1878.             
  1879.             if (fh != 0)
  1880.                perror("dup2(1,3) failure");.
  1881.             
  1882.       
  1883.                ECVT
  1884.                
  1885.             
  1886.                #include <stdlib.h>      ΓαÑíπÑΓß∩    Γ«½∞¬«    ñ½∩
  1887.                                         «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  1888.  
  1889.                                       - 86 -
  1890.          
  1891.          
  1892.                char *ecvt(value, ndigits, decptr,signptr);
  1893.                
  1894.                double value;            »αÑ«íαáºπѼ«Ñ τ¿ß½«
  1895.                                     
  1896.                int ndigits;             ¬«½¿τÑßΓó«    ºá»«¼¿¡áѼδσ
  1897.                                         µ¿Σα
  1898.             
  1899.                int *decptr;             π¬áºáΓѽ∞  ¡á  ºá»«¼¡Ñ¡¡«Ñ
  1900.                                         »«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿
  1901.             
  1902.                int *signptr;            π¬áºáΓѽ∞  ¡á  ºá»«¼¡Ñ¡¡δ⌐
  1903.                                         ¿¡ñ¿¬áΓ«α  º¡á¬á
  1904.                
  1905.             
  1906.                Ä»¿ßá¡¿Ñ.
  1907.                öπ¡¬µ¿∩  ecvt  »αÑ«íαẫóδóáÑΓ  τ¿ß½«  ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó
  1908.          ß¿¼ó«½∞¡πε ßΓ᫬π. Value - φΓ« τ¿ß½« ß »½áóáεΘÑ⌐ Γ«τ¬«⌐,  ¬«Γ«α«Ñ
  1909.          ñ«½ª¡« íδΓ∞ »αÑ«íαẫóá¡«. Ecvt ºá»«¼¿¡áÑΓ µ¿Σαδ ndigits ¿º value
  1910.          ¬á¬ ßΓα«¬π ¿ ñ«íáó½∩ÑΓ ¬ ¡Ñ⌐ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0'). àß½¿ ¬«½¿τÑßΓó«
  1911.          µ¿Σα ó value »αÑóδΦáÑΓ ndigits, »«ß½Ññ¡∩∩ º¡áτáΘá∩ µ¿Σαá «¬απú½∩-
  1912.          ÑΓß∩. àß½¿ µ¿Σα ¼Ñ¡∞ΦÑ, τѼ ndigits, ßΓ᫬á ñ«»«½¡∩ÑΓß∩ ¡π½∩¼¿.
  1913.                é  ßΓα«¬Ñ σαá¡∩Γß∩ Γ«½∞¬« µ¿Σαδ. Å«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿
  1914.          ¿ º¡á¬á ó value ¼«ªÑΓ íδΓ∞ «»αÑñѽѡ«  »«ß½Ñ  ó맮óá  Σπ¡¬µ¿¿  ¿º
  1915.          decptr ¿ signptr. Çαúπ¼Ñ¡Γ decptr π¬áºδóáÑΓ ¡á µÑ½«Ñ τ¿ß½«, «»αÑ-
  1916.          ñѽ∩εΘÑÑ »«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿ «Γ¡«ß¿Γѽ∞¡« ¡áτá½á ßΓ᫬¿. 0
  1917.          ¿½¿  «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ «º¡áτáεΓ, τΓ« ñÑß∩Γ¿τ¡á∩ Γ«τ¬á αáß»«-
  1918.          ½«ªÑ¡á ½ÑóÑÑ »Ñαó«⌐ µ¿Σαδ. Çαúπ¼Ñ¡Γ signptr π¬áºδóáÑΓ  ¡á  µÑ½«Ñ,
  1919.          «»αÑñѽ∩εΘÑÑ  º¡á¬  »αÑ«íαáºπѼ«ú«  τ¿ß½á.  àß½¿ signptr αáó¡« 0,
  1920.          τ¿ß½« »«½«ª¿Γѽ∞¡«Ñ, ¿¡áτÑ - «Γα¿µáΓѽ∞¡«Ñ.
  1921.                
  1922.             
  1923.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1924.                
  1925.                öπ¡¬µ¿∩ ecvt ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓα«¬π µ¿Σα. é  ß½πτáÑ
  1926.          «Φ¿í¬¿ ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1927.                æ¼.ΓᬪѠatof, atoi, atol, fcvt, gcvt.
  1928.            
  1929.                çá¼Ñτá¡¿Ñ.  öπ¡¬µ¿¿ ecvt ¿ fcvt ¿ß»«½∞ºπεΓ ñ½∩ »αÑ«íαẫóá-
  1930.          ¡¿∩ «ñ¿¡ ¿ Γ«Γ ªÑ ßΓáΓ¿τÑ߬¿ αáß»αÑñѽѡ¡δ⌐ íπΣÑα. èáªñ«Ñ «íαáΘÑ-
  1931.          ¡¿Ñ ¬ «ñ¡«⌐ ¿º φΓ¿σ »α«µÑñπα π¡¿τΓ«ªáÑΓ αѺπ½∞ΓáΓ »αÑñδñπΘÑú« «í-
  1932.          αáΘÑ¡¿∩.
  1933.             
  1934.             
  1935.                Åα¿¼Ñα:
  1936.                
  1937.                #include <stdlib.h>
  1938.            
  1939.                int decimal, sign;
  1940.                char *buffer;
  1941.                int preciision=10;
  1942.                
  1943.       
  1944.                buffer=ecvt(3.1415926535,precision,&decimal,&sign);
  1945.                   /*íπΣÑα ß«ñÑαª¿Γ "3141592654",decimal=1,sign=0*/
  1946.                                         
  1947.  
  1948.                                       - 87 -
  1949.          
  1950.          
  1951.                
  1952.                EOF
  1953.             
  1954.             #include <io.h>      ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1955.                                  Σπ¡¬µ¿¿
  1956.             
  1957.             int eof(handle);
  1958.             int handle;          handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1959.                                  Σá⌐½
  1960.             
  1961.                Ä»¿ßá¡¿Ñ.
  1962.             
  1963.                öπ¡¬µ¿∩ eof «»αÑñѽ∩ÑΓ ñ«ßΓ¿ªÑ¡¿Ñ ¬«¡µá  Σá⌐½á  ñ½∩  Σá⌐½á,
  1964.          áßß«µ¿¿α«óá¡¡«ú« ß handle.
  1965.             
  1966.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1967.             
  1968.                ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 1, Ñß½¿ ΓѬπΘá∩ »«º¿µ¿∩ ∩ó-
  1969.          ½∩ÑΓß∩  ¬«¡µ«¼ Σá⌐½á; 0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ. é«ºóαáΘáѼ«Ñ º¡áτÑ-
  1970.          ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ; errno πßΓá¡áó½¿óáÑΓß∩ ó  EBADF,
  1971.          ¿¡¿µ¿¿απ∩ »α¿ φΓ«¼ ¡ÑóÑα¡δ⌐ handle Σá⌐½á.
  1972.                æ¼. ΓᬪѠclearerr, feof, ferror, perror.
  1973.             
  1974.                Åα¿¼Ñα:
  1975.             
  1976.             #include <io.h>
  1977.             #include <fgntl.h>
  1978.             
  1979.             int fh, count;
  1980.             char buf[10];
  1981.             
  1982.             fh = open("data", O_RDONLY);
  1983.             
  1984.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α »α«óÑα∩ÑΓ »ÑαÑñ τΓÑ¡¿Ñ¼ πß½«ó¿Ñ ¬«¡µá
  1985.          Σá⌐½á */
  1986.             
  1987.             while (!eof(fh))
  1988.             { count = read(fh, buf, 10);
  1989.               .
  1990.               .
  1991.               .
  1992.               }.
  1993.  
  1994.       
  1995.                EXECL - EXECVPE
  1996.             
  1997.             
  1998.             #include  <process.h>       ΓαÑíπÑΓß∩    Γ«½∞¬«    ñ½∩
  1999.                                         «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿⌐
  2000.             
  2001.             int execl(pathname, arg0, arg1 ... ,argn, NULL);
  2002.             
  2003.             int execle(pathname, arg0, arg1 ... ,argn, NULL, envp);
  2004.             
  2005.             int execlp(pathname, arg0, arg1 ... ,argn, NULL);
  2006.  
  2007.                                       - 88 -
  2008.          
  2009.          
  2010.             
  2011.             int execlpe(pathname, arg0, arg1 ... ,argn, NULL, envp);
  2012.             
  2013.             int execv(pathname, argv);
  2014.             
  2015.             int execve(pathname, argv, envp);
  2016.             
  2017.             int execvp(pathname, argv);
  2018.             
  2019.             int exevpe(pathname, argv, envp);
  2020.             
  2021.             char *pathname;                 path-¿¼∩  óδ»«½¡∩Ѽ«ú«
  2022.                                             Σá⌐½á
  2023.             char *arg0, *arg1, ..., *argn;  ß»¿ß«¬  π¬áºáΓѽÑ⌐  ¡á
  2024.                                             áαúπ¼Ñ¡Γδ
  2025.             char *argv[];                   ¼áßß¿ó  π¬áºáΓѽÑ⌐  ¡á
  2026.                                             áαúπ¼Ñ¡Γδ
  2027.             char *envp[];                   ¼áßß¿ó  π¬áºáΓѽÑ⌐  ¡á
  2028.                                             πßΓá¡«ó½Ñ¡¡«Ñ  «¬απªÑ-
  2029.                                             ¡¿Ñ
  2030.                Ä»¿ßá¡¿Ñ.
  2031.             
  2032.                öπ¡¬µ¿¿  exec  ºáúαπªáεΓ  ¿  óδ»«½¡∩εΓ ¡«óδ⌐ child-»α«µÑßß.
  2033.          è«úñá ó맮ó »α«¿º«Φѽ πß»ÑΦ¡«, child-»α«µÑßß αẼÑΘáÑΓß∩ ó  »á¼∩-
  2034.          Γ¿,  ºá¡∩Γ«⌐  óδºóáóΦ¿¼  »α«µÑßß«¼.  ä½∩  ºáúαπº¬¿  ¿  óδ»«½¡Ñ¡¿∩
  2035.          child-»α«µÑßßá ñ«½ª¡« íδΓ∞ ñ«ßΓπ»¡« ñ«ßΓáΓ«τ¡« »á¼∩Γ¿.
  2036.                Pathname ¼«ªÑΓ «»αÑñѽ∩Γ∞ »«½¡δ⌐  path  (¿º  ¬«α¡∩),  τáßΓ∞
  2037.          path (¿º ΓѬπΘÑú« αáí«τÑú« ñ¿αÑ¬Γ«α¿∩) ¿½¿ »α«ßΓ« ¿¼∩ Σá⌐½á.
  2038.                àß½¿ pathname ¡Ñ ¿¼ÑÑΓ αáßΦ¿αÑ¡¿∩ ñ½∩ ¿¼Ñ¡¿ Σá⌐½á  ¿½¿ Ñß½¿
  2039.          «¡« ¡Ñ ºá¬á¡τ¿óáÑΓß∩ Γ«τ¬«⌐ (.), Γ«úñá Σπ¡¬µ¿¿ exec πßΓá¡áó½¿óáεΓ
  2040.          αáßΦ¿αÑ¡¿Ñ  .EXE. àß½¿ pathname ¿¼ÑÑΓ αáßΦ¿αÑ¡¿Ñ, Γ« ¿ß»«½∞ºπÑΓß∩
  2041.          Γ«½∞¬« φΓ« αáßΦ¿αÑ¡¿Ñ. àß½¿ pathname ºá¬á¡τ¿óáÑΓß∩  Γ«τ¬«⌐,  exec
  2042.          «ßπΘÑßΓó½∩ÑΓ  »«¿ß¬  pathname  íѺ  αáßΦ¿αÑ¡¿∩. Åα«µÑñπαδ execlp,
  2043.          execlpe, execvpe «ßπΘÑßΓó½∩εΓ »«¿ß¬ ñ½∩ pathname (¿ß»«½∞ºπ∩ ΓÑ ªÑ
  2044.          ßá¼δÑ »α«µÑñπαδ) ó ñ¿αÑ¬Γ«α¿∩σ, «»αÑñѽѡ¡δσ »ÑαѼѡ¡«⌐ «¬απªÑ¡¿∩
  2045.          PATH.
  2046.                Çαúπ¼Ñ¡Γδ ñ½∩ ¡«ó«ú« »α«µÑßßá »ÑαÑñáεΓß∩  ¬á¬  áαúπ¼Ñ¡Γδ  ó
  2047.          ó맮óÑ exec »πΓѼ ºáñá¡¿∩ «ñ¡«ú« ¿½¿ í«½ÑÑ π¬áºáΓѽÑ⌐ ¡á ß¿¼ó«½∞-
  2048.          ¡δÑ  ßΓ᫬¿. ¥Γ¿ ß¿¼ó«½∞¡δÑ ßΓ᫬¿ «íαáºπεΓ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó ñ½∩
  2049.          child-»α«µÑßßá. ÄíΘá∩ ñ½¿¡á ßΓ᫬, «»αÑñѽ∩εΘá∩ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó
  2050.          ñ½∩ ¡«ó«ú« »α«µÑßßá, ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 128 íá⌐Γ«ó. ìπ½Ñó«⌐  ß¿¼-
  2051.          ó«½ «¬«¡τá¡¿∩ '\0 'ñ½∩  ¬áªñ«⌐ ßΓ᫬¿ ó φΓπ ñ½¿¡π ¡Ñ ºáßτ¿ΓδóáÑΓ-
  2052.          ß∩,á ß¿¼ó«½δ »α«íѽá (áóΓ«¼áΓ¿τÑ߬¿ óßΓáó½∩ѼδÑ ñ½∩ áαúπ¼Ñ¡Γ«ó) -
  2053.          ºáßτ¿ΓδóáεΓß∩.
  2054.                ô¬áºáΓѽ¿ áαúπ¼Ñ¡Γ«ó ¼«úπΓ »ÑαÑñáóáΓ∞ß∩ ¬á¬ «Γñѽ∞¡δÑ áαúπ-
  2055.          ¼Ñ¡Γδ  (ó execl, execle, execlp, execlpe) ¿½¿ ¬á¬ ¼áßß¿ó π¬áºáΓÑ-
  2056.          ½Ñ⌐ (ó execv, execve, execvp, execvpe). Å« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡  áα-
  2057.          úπ¼Ñ¡Γ  -  arg0 ¿½¿ argv[0] - ñ«½ªÑ¡ íδΓ∞ »ÑαÑñá¡ child-»α«µÑßßπ.
  2058.          Å« ß«ú½áΦÑ¡¿ε φëàáαúπ¼Ñ¡Γ ∩ó½∩ÑΓß∩ ¬«»¿Ñ⌐  áαúπ¼Ñ¡Γá  pathname.
  2059.          (äαπú«Ñ  º¡áτÑ¡¿Ñ  ¡Ñ  íπñÑΓ ó«ß»α¿¡∩Γ« ¬á¬ «Φ¿í¬á). é óÑαß¿∩σ MS
  2060.          DOS, αá¡¡¿σ «Γ 3.0, »ÑαÑñáóáѼ«Ñ º¡áτÑ¡¿Ñ arg0 ¿½¿ argv[0]  ∩ó½∩-
  2061.          ÑΓß∩ ¡Ñ ñ«ßΓπ»¡δ¼ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó child-»α«µÑßßÑ. Äñ¡á¬«, ñ½∩
  2062.          óÑαß¿⌐  MS  DOS  3.0  ¿  ßΓáαΦ¿σ   pathname ñ«ßΓπ»¡« ¬á¬ arg0 ¿½¿
  2063.          argv[0].
  2064.                é맮óδ execl, execle, execlp, execlpe  «íδτ¡«  ¿ß»«½∞ºπεΓß∩
  2065.  
  2066.                                       - 89 -
  2067.          
  2068.          
  2069.          Γ«úñá,  ¬«úñá  ¬«½¿τÑßΓó«  áαúπ¼Ñ¡Γ«ó  ¿ºóÑßΓ¡« ºáαá¡ÑÑ. Çαúπ¼Ñ¡Γ
  2070.          arg0 «íδτ¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á pathname. Çαúπ¼Ñ¡Γδ «Γ arg1 ñ«
  2071.          argn π¬áºδóáεΓ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ ¡«óδ⌐ ß»¿ß«¬  áα-
  2072.          úπ¼Ñ¡Γ«ó. êñπΘ¿⌐ ºá áαúπ¼Ñ¡Γ«¼ argn NULL-π¬áºáΓѽ∞ «»αÑñѽ∩ÑΓ ¬«-
  2073.          ¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
  2074.                Äíδτ¡«  ó맮óδ  execv, execve, execvp, execvpe ¿ß»«½∞ºπεΓß∩
  2075.          Γ«úñá, ¬«úñá τ¿ß½« áαúπ¼Ñ¡Γ«ó ñ½∩ ¡«ó«ú« »α«µÑßßá ∩ó½∩ÑΓß∩  »ÑαÑ-
  2076.          ¼Ñ¡¡δ¼.  ô¬áºáΓѽ¿ ¡á áαúπ¼Ñ¡Γδ »ÑαÑßδ½áεΓß∩ ¬á¬ ¼áßß¿ó argv. Çα-
  2077.          úπ¼Ñ¡Γ argv[0] «íδτ¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á pathname.  Çαúπ¼Ñ¡Γδ
  2078.          «Γ  argv[1] ñ« argv[n] π¬áºδóáεΓ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ
  2079.          ¡«óδ⌐ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó. Çαúπ¼Ñ¡Γ argv[n+1] ñ«½ªÑ¡ íδΓ∞ NULL-π¬á-
  2080.          ºáΓѽѼ ñ½∩ «»αÑñѽѡ¿∩ ¬«¡µá ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
  2081.                öá⌐½δ, «Γ¬αδΓδÑ ñ« ó맮óá exec, «ßΓáεΓß∩ «Γ¬αδΓ묨 ¿ ó  ¡«-
  2082.          ó«¼  »α«µÑßßÑ.  é ó맮óáσ execl, execlp, execv, execvp child-»α«-
  2083.          µÑßß ¡áß½ÑñπÑΓ «¬απªÑ¡¿Ñ parent-»α«µÑßßá. é맮óδ execle, execlpe,
  2084.          execve, execvpe »«ºó«½∩εΓ  »«½∞º«óáΓÑ½ε  ¿º¼Ñ¡∩Γ∞  «¬απªÑ¡¿Ñ  ñ½∩
  2085.          child-»α«µÑßßá,  »ÑαÑñáóá∩  ß»¿ß«¬ πßΓá¡«ó½Ñ¡¡«ú« «¬απªÑ¡¿∩ τÑαѺ
  2086.          áαúπ¼Ñ¡Γ envp.
  2087.                Çαúπ¼Ñ¡Γ envp ∩ó½∩ÑΓß∩ ¼áß߿󫼠π¬áºáΓѽÑ⌐ ¡á char,  ¬áªñδ⌐
  2088.          φ½Ñ¼Ñ¡Γ  ¬«Γ«α«ú« (¿ß¬½ετá∩ »«ß½Ññ¡¿⌐ φ½Ñ¼Ñ¡Γ) π¬áºδóáÑΓ ¡á ßΓα«-
  2089.          ¬π, ¬«Γ«αá∩ ºá¬á¡τ¿óáÑΓß∩ ¡π½Ñ¼ ¿ «»αÑñѽ∩ÑΓ  »ÑαѼѡ¡πε  «¬απªÑ-
  2090.          ¡¿∩. Äíδτ¡« φΓá ßΓα«¬á ¿¼ÑÑΓ Σ«α¼π:
  2091.             
  2092.                NAME = value   ,
  2093.             
  2094.          úñÑ  NAME -  ¿¼∩  »ÑαѼѡ¡«⌐  «¬απªÑ¡¿∩,  value  - º¡áτÑ¡¿Ñ ßΓα«-
  2095.          ¬¿  (ºá¼ÑΓ¿¼, τΓ«  value ¡Ñ ºá¬½ετáÑΓß∩ ó ¬áóδτ¬¿ "..."). Å«ß½Ññ-
  2096.          ¡¿¼ φ½Ñ¼Ñ¡Γ«¼ ¼áßß¿óá envp ñ«½ªÑ¡ íδΓ∞ NULL.
  2097.                àß½¿ º¡áτÑ¡¿Ñ¼ envp ∩ó½∩ÑΓß∩ NULL, child-»α«µÑßß  ¡áß½ÑñπÑΓ
  2098.          πßΓá¡«ó½Ñ¡¡«Ñ «¬απªÑ¡¿Ñ parent-»α«µÑßßá.
  2099.  
  2100.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  2101.             
  2102.                öπ¡¬µ¿¿  exec  ¡Ñ  ¿¼ÑεΓ  ¡«α¼á½∞¡«ú« ó«ºóαáΓá ó óδºδóáεΘ¿⌐
  2103.          »α«µÑßß. àß½¿ ¿º Σπ¡¬µ¿¿ exec »α«¿ßσ«ñ¿Γ ó«ºóαáΓ, Γ« φΓ« «º¡áτáÑΓ
  2104.          «Φ¿í¬π ¿ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ αáó¡«  -1.  ÅÑαѼѡ¡á∩  errno  »α¿
  2105.          φΓ«¼ πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  2106.             
  2107.             
  2108.             çìÇùàìêà               æî¢æï çìÇùàìêƒ
  2109.       
  2110.             
  2111.             E2BIG          æ»¿ß«¬ áαúπ¼Ñ¡Γ«ó »αÑóδΦáÑΓ  128  íá⌐Γ,
  2112.                            ¿½¿    »α«ßΓαá¡ßΓó«,    ΓαÑíπѼ«Ñ   ñ½∩
  2113.                            ¿¡Σ«α¼áµ¿¿ «¬απªÑ¡¿∩, »αÑóδΦáÑΓ 32è
  2114.                            
  2115.             EACCES         ü½«¬¿α«ó¬á  ¿½¿  αáºñѽѡ¿Ñ Σá⌐½á  (ñ½∩
  2116.                            óÑαß¿⌐ 3.0 ¿ ßΓáαΦ¿σ)
  2117.                            
  2118.             EMFILE         î¡«ú«  «Γ¬αδΓδσ Σá⌐½«ó (߻ѵ¿Σ¿µ¿α«óá¡-
  2119.                            ¡δ⌐ Σá⌐½ ñ«½ªÑ¡  íδΓ∞  «Γ¬αδΓ,    τΓ«íδ
  2120.                            ¡áτáΓ∞ Ñú« óδ»«½¡Ñ¡¿Ñ)
  2121.                            
  2122.             ENOENT         öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«
  2123.                            
  2124.  
  2125.                                       - 90 -
  2126.          
  2127.          
  2128.             ENOEXEC        çáñá¡¡δ⌐ Σá⌐½  ¡Ñ ∩ó½∩ÑΓß∩  óδ»«½¡∩Ѽδ¼
  2129.                            ¿½¿ ¿¼ÑÑΓ ¡ÑóÑα¡δ⌐ Σ«α¼áΓ
  2130.                            
  2131.             ENOMEM         ä«ßΓπ»¡«⌐   »á¼∩Γ¿  ¡Ñ  ñ«ßΓáΓ«τ¡«  ñ½∩
  2132.                            óδ»«½¡Ñ¡¿∩ child-»α«µÑßá; ¿½¿ ñ«ßΓπ»¡á∩
  2133.                            »á¼∩Γ∞    ∩ó½∩ÑΓß∩   ºá»«ατÑ¡¡«⌐;   ¿½¿
  2134.                            ßπΘÑßΓóπεΓ ¡ÑóÑα¡δÑ í½«¬¿, π¬áºδóáεΘ¿Ñ,
  2135.                            τΓ« parent-»α«µÑßß ¡ÑóÑα¡« αẼÑΘÑ¡
  2136.  
  2137.                æ¼.  ΓᬪѠ abort,  exit,  _exit,  onexit, spawnl, spawnle,
  2138.          spawnlp, spawnlpe, spawnv, spawnve, spawnvp, spawnvpe, system.
  2139.                çá¼Ñτá¡¿Ñ. é맮óδ exec ¡Ñ ß«σαá¡∩εΓ ΓѬßΓ«óδ⌐ αѪ¿¼  »αÑ«í-
  2140.          αẫóá¡¿∩  ñ½∩ «Γ¬αδΓδσ Σá⌐½«ó. àß½¿ child-»α«µÑßß ñ«½ªÑ¡ ¿ß»«½∞-
  2141.          º«óáΓ∞ Σá⌐½δ, π¡áß½Ññ«óá¡¡δÑ  «Γ  parent-»α«µÑßßá,  Γ«úñá  ñ«½ª¡á
  2142.          íδΓ∞  ¿ß»«½∞º«óá¡á »α«µÑñπαá setmode ñ½∩ πßΓᡫ󬿠ΓαÑíπѼ«ú« αÑ-
  2143.          ª¿¼á »αÑ«íαẫóá¡¿∩ ñ½∩ φΓ¿σ Σá⌐½«ó.
  2144.                ôßΓᡫ󬿠߿ú¡á½«ó »αÑαδóá¡¿∩ ¡Ñ ß«σαá¡∩εΓß∩  ó  child-»α«-
  2145.          µÑßßÑ,  ß«ºñá¡¡«¼ óδº«ó«¼ »α«µÑñπαδ exec. ¥Γ¿ πßΓᡫ󬿠»ÑαÑπßΓá-
  2146.          ¡áó½¿óáεΓß∩ »« π¼«½τá¡¿ε ó child-»α«µÑßßÑ.
  2147.             
  2148.                Åα¿¼Ñα:
  2149.                
  2150.             #include <process.h>
  2151.             #include <stdio.h>
  2152.             
  2153.             extern char **environ;
  2154.             
  2155.             char *args[4];
  2156.             int result;
  2157.             
  2158.             args[0] = "child";
  2159.             args[1] = "one";
  2160.             args[2] = "two";
  2161.             args[3] = NULL;
  2162.                
  2163.                /*  óßÑ  ß½ÑñπεΘ¿Ñ  «»ÑαáΓ«αδ  »«ºó«½∩εΓ óδ»«½¡∩Γ∞ »α«µÑßß,
  2164.          ¡áºóá¡¡δ⌐ "child.exe", ¿ »ÑαÑñáΓ∞ Ñ¼π Γα¿ áαúπ¼Ñ¡Γá. */
  2165.             
  2166.             
  2167.             result = execl("child.exe", "child", "one", "two",
  2168.                            NULL);
  2169.             result = execle("child.exe", "child", "one", "two",
  2170.                            NULL, environ);
  2171.             result = execlp("child.exe", "child", "one", "two",
  2172.                            NULL);
  2173.             result = execv("child.exe", args);
  2174.             result = execve("child.exe", args, environ);
  2175.             result = execvp("child.exe", args);.
  2176.             
  2177.       
  2178.                EXIT - _EXIT
  2179.             
  2180.             #include <process.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  2181.                                    Σπ¡¬µ¿¿
  2182.             #include <stdlib.h>    ¿ß»«½∞ºπÑΓ  ½¿í«  <process.h>,
  2183.  
  2184.                                       - 91 -
  2185.          
  2186.          
  2187.                                    ½¿í« <stdlib.h>
  2188.             
  2189.             void exit(status);     ºáóÑαΦáÑΓ »α«µÑßß  »«ß½Ñ ºá¬αδ-
  2190.                                    Γ¿∩ Σá⌐½á
  2191.             
  2192.             void _exit(status);    ºáóÑαΦáÑΓ »α«µÑßß  íѺ «í¡«ó½Ñ-
  2193.                                    ¡¿∩ íπΣÑα«ó »«Γ«¬á
  2194.             int status;            ßΓáΓπß óδσ«ñá
  2195.             
  2196.             
  2197.                Ä»¿ßá¡¿Ñ.
  2198.             
  2199.                öπ¡¬µ¿¿ exit ¿ _exit ºáóÑαΦáεΓ óδºóá¡¡δ⌐ »α«µÑßß. ÅÑαÑñ ºá-
  2200.          óÑαΦÑ¡¿Ñ¼  »α«µÑßßá Σπ¡¬µ¿∩ exit «í¡«ó½∩ÑΓ óßÑ íπΣÑαδ ¿ ºá¬αδóáÑΓ
  2201.          óßÑ «Γ¬αδΓδÑ Σá⌐½δ. öπ¡¬µ¿∩ _exit ºáóÑαΦáÑΓ óßÑ »α«µÑßßδ íѺ  «í-
  2202.          ¡«ó½Ñ¡¿∩ íπΣÑα«ó »«Γ«¬á. ç¡áτÑ¡¿Ñ status «íδτ¡« πßΓá¡áó½¿óáÑΓß∩ ó
  2203.          0  ñ½∩ π¬áºá¡¿∩ ¡«α¼á½∞¡«ú« óδσ«ñá ¿ πßΓá¡áó½¿óáÑΓß∩ ó ½εí«Ñ ñαπ-
  2204.          ú«Ñ º¡áτÑ¡¿Ñ ñ½∩ «»αÑñѽѡ¿∩  «Φ¿í¬¿.  Å«ß¬«½∞¬π  ó맮óδ  exit  ¿
  2205.          _exit  ¡Ñ ó«ºóαáΘáεΓ º¡áτÑ¡¿∩, ¼½áñΦ¿⌐ íá⌐Γ status ∩ó½∩ÑΓß∩ ó«ºó-
  2206.          αáΓ«¼ ñ½∩ «ª¿ñáεΘÑú« parent-»α«µÑßßá. àß½¿  ¡ÑΓ  parent-»α«µÑßßá,
  2207.          Γ« º¡áτÑ¡¿Ñ status ΓÑα∩ÑΓß∩.
  2208.             
  2209.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  2210.             
  2211.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  2212.                æ¼.ΓᬪѠ abort,  execl,  execle,  execlp,  execv,  execve,
  2213.          execvp,  onexit,  spawnl,  spawnle,  spawnlp,  spawnv,   spawnve,
  2214.          spawnvp, system.
  2215.             
  2216.                Åα¿¼Ñα:
  2217.             
  2218.             #include <process.h>
  2219.             #include <stdio.h>
  2220.             
  2221.             FILE *stream;
  2222.             .
  2223.             .
  2224.             .
  2225.             
  2226.                /*  ß½ÑñπεΘ¿Ñ  «»ÑαáΓ«αδ óδºδóáεΓ ºáóÑαΦÑ¡¿Ñ »α«µÑßßá »«ß½Ñ
  2227.          «í¡«ó½Ñ¡¿∩ íπΣÑα«ó ¿ ºá¬αδΓ¿∩ «Γ¬αδΓδσ Σá⌐½«ó */
  2228.             
  2229.             if((stream=fopen("data","r"))==NULL) {
  2230.                 fprintf(stderr,"couldn't open data file\n");
  2231.                 exit (1);
  2232.                 }
  2233.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óδºδóáεΓ ¡Ñ¼Ññ½Ñ¡¡«Ñ ºáóÑαΦÑ¡¿Ñ »α«-
  2234.          µÑßßá, Ñß½¿ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓδ¼ */
  2235.             
  2236.             if((stream=fopen("data","r"))==NULL)
  2237.              
  2238.                 {
  2239.       
  2240.                 fprintf(stderr,"couldn't open data file\n");
  2241.                 _exit (1);
  2242.                
  2243.                 }
  2244.                
  2245.  
  2246.                                       - 92 -
  2247.          
  2248.                
  2249.                EXP
  2250.             
  2251.             
  2252.             #include <math.h>
  2253.             
  2254.             double exp(x);
  2255.             double x;          º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
  2256.             
  2257.                Ä»¿ßá¡¿Ñ.
  2258.                 
  2259.                öπ¡¬µ¿∩ exp ó«ºóαáΘáÑΓ φ¬ß»«¡Ñ¡µ¿á½∞¡πε Σπ¡¬µ¿ε ßó«Ñú«  áα-
  2260.          úπ¼Ñ¡Γá x ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
  2261.                 
  2262.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  2263.             
  2264.                öπ¡¬µ¿∩ exp ó«ºóαáΘáÑΓ e ó ßΓѻѡ¿ x. Åα¿ »ÑαÑ»«½¡Ñ¡¿¿ Σπ¡-
  2265.          ¬µ¿∩  ó«ºóαáΘáÑΓ  HUGE ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE, »α¿ »«ΓÑαÑ
  2266.          º¡áτ¿¼«ßΓ¿ exp ó«ºóαáΘáÑΓ 0, ¡« ¡Ñ πßΓá¡áó½¿óáÑΓ errno.
  2267.                æ¼.ΓᬪѠlog.
  2268.             
  2269.                Åα¿¼Ñα:
  2270.             
  2271.             #include <math.h>
  2272.             
  2273.             double x,y;
  2274.             .
  2275.             .
  2276.             .
  2277.             y = exp(x);.
  2278.             
  2279.       
  2280.       
  2281.                _EXPAND
  2282.             
  2283.             
  2284.             #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  2285.                                    Σπ¡¬µ¿¿
  2286.             
  2287.             char *_expand(ptr,size);
  2288.             char *ptr;             π¬áºáΓѽ∞ ¡á αá¡ÑÑ  ºáσóáτÑ¡¡δ⌐
  2289.                                    í½«¬ »á¼∩Γ¿
  2290.             unsigned size;         ¡«óδ⌐ αẼÑα ó íá⌐Γáσ
  2291.             
  2292.             
  2293.                Ä»¿ßá¡¿Ñ.
  2294.             
  2295.                öπ¡¬µ¿∩ _expand ¿º¼Ñ¡∩ÑΓ αẼÑα  αá¡ÑÑ  ºáσóáτÑ¡¡δσ  í½«¬«ó
  2296.          »á¼∩Γ¿,  »δΓá∩ß∞  αáßΦ¿α¿Γ∞  ¿½¿ ßπº¿Γ∞ í½«¬ íѺ »ÑαÑñó¿ªÑ¡¿∩ Ñú«
  2297.          ¼ÑßΓ«»«½«ªÑ¡¿∩ ó heap.
  2298.                Çαúπ¼Ñ¡Γ ptr π¬áºδóáÑΓ ¡á ¡áτὫ í½«¬á. Çαúπ¼Ñ¡Γ size ºáñá-
  2299.          ÑΓ ¡«óδ⌐ αẼÑα í½«¬á ó íá⌐Γáσ. æ«ñÑন¼«Ñ í½«¬«ó ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  2300.                Çαúπ¼Ñ¡Γ ptr ΓᬪѠπ¬áºδóáÑΓ ¡á «ßó«í«ªñáεΘ¿⌐ß∩ í½«¬ ñ« ΓÑσ
  2301.  
  2302.                                       - 93 -
  2303.          
  2304.          
  2305.          »«α, »«¬á ¡Ñ íπñπΓ ó¡ÑΦ¡Ñ óδºóá¡δ calloc, _expand, halloc, malloc
  2306.          ¿½¿ realloc, ½¿í« »«¬á í½«¬ íπñÑΓ ßó«í«ñÑ¡.
  2307.                àß½¿ ptr π¬áºδóáÑΓ ¡á «ßó«í«ªñÑ¡¡δ⌐ í½«¬, Γ« φΓ«Γ í½«¬  «ß-
  2308.          ΓáÑΓß∩ ßó«í«ñ¡δ¼ ¿ »«ß½Ñ ó맮óá _expand.
  2309.             
  2310.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  2311.             
  2312.                öπ¡¬µ¿∩  _expand ó«ºóαáΘáÑΓ char-π¬áºáΓѽ∞ ¡á »ÑαѺáσóáτÑ¡-
  2313.          ¡δ⌐ í½«¬ »á¼∩Γ¿. é «Γ½¿τ¿¿ «Γ realloc, _expand ¡Ñ ¼«ªÑΓ  »ÑαÑñó¿-
  2314.          úáΓ∞  í½«¬ ¿ ¿º¼Ñ¡∩Γ∞ Ñú« αẼÑαδ. ¥Γ« «º¡áτáÑΓ, τΓ« áαúπ¼Ñ¡Γ ptr
  2315.          ñ½∩ _expand ∩ó½∩ÑΓß∩ ΓѼ ªÑ ßá¼δ¼, τΓ« ¿  ó«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ,
  2316.          Ñß½¿  »á¼∩Γ¿  ñ«ßΓáΓ«τ¡«, τΓ«íδ αáßΦ¿α¿Γ∞ í½«¬ íѺ Ñú« »ÑαÑñó¿ªÑ-
  2317.          ¡¿∩.
  2318.                é«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿  »á¼∩Γ¿  ¡Ññ«ßΓáΓ«τ¡«  ñ½∩
  2319.          αáßΦ¿αÑ¡¿∩ í½«¬á. é φΓ«¼ ß½πτáÑ «íΩѬΓ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ ptr,
  2320.          íπñÑΓ αáßΦ¿αÑ¡ ¡áßΓ«½∞¬«, ¡á߬«½∞¬« »«ºó«½∩ÑΓ Ñú« αáß»«½«ªÑ¡¿Ñ.
  2321.                é  »á¼∩Γ¿,  ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
  2322.          αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá.
  2323.                ì«óδ⌐ αẼÑα «íΩѬΓá ¼«ªÑΓ íδΓ∞ »α«óÑαÑ¡ Σπ¡¬µ¿Ñ⌐ _msize.
  2324.                ùΓ«íδ »«½πτ¿Γ∞ π¬áºáΓѽ∞, Γ¿» ¬«Γ«α«ú« «Γ½¿τÑ¡ «Γ char, ¿ß-
  2325.          »«½∞ºπÑΓß∩ »αÑ«íαẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
  2326.                æ¼.ΓᬪѠcalloc, free, halloc, malloc, _msize, realloc.
  2327.             
  2328.             
  2329.                Åα¿¼Ñα:
  2330.             
  2331.             #include <stdio.h>
  2332.             #include <malloc.h>
  2333.             
  2334.             main()
  2335.                
  2336.               {
  2337.                long *oldptr;
  2338.                unsigned int newsize=64000;
  2339.             
  2340.                oldptr=(long*)malloc(10000*sizeof(long));
  2341.                printf("Size of memory block pointed to by
  2342.                       oldptr=%u\n", _msize(oldptr));
  2343.             
  2344.                if (_expand(oldptr,newsize)!= NULL)
  2345.                  printf("expand was able to increase block
  2346.                         to %u\n", _msize(oldptr));
  2347.             
  2348.                else
  2349.                 printf("expand was able to increase block to
  2350.                        only %u\n", _msize(oldptr));
  2351.                }
  2352.  
  2353.                       
  2354.  
  2355.