home *** CD-ROM | disk | FTP | other *** search
/ For Beginners & Professional Hackers / cd.iso / docum / c3.doc / lb06.d < prev   
Encoding:
Text File  |  1988-05-18  |  59.9 KB  |  1,499 lines

  1.                                       - 238 -
  2.                                         
  3.  
  4.             
  5.                Åα¿¼Ñα:
  6.             
  7.             #include <stdlib.h>
  8.             #define NBYTES  1024
  9.             
  10.             char from[NBYTES],  to [NBYTES];
  11.             
  12.                /*  ¬«»¿απÑΓ  n íá⌐Γ«ó ¿º «ñ¡«ú« αáß»«½«ªÑ¡¿∩ ó ñαπú«Ñ, »Ñ-
  13.          αÑßΓáó½∩ÑΓ («í¼Ñ¡¿óáÑΓ) ¬áªñπε »áαπ ß¼Ñª¡δσ íá⌐Γ«ó */
  14.             
  15.             swab(from, to, NBYTES);.
  16.       
  17.             
  18.                SYSTEM
  19.                 
  20.             #include <process.h>   ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  21.                                    Σπ¡¬µ¿¿
  22.             #include <stdlib.h>    ¿ß»«½∞ºπÑΓ  ½¿í«  <process.h>,
  23.                                    ½¿í« <stdlib.h>
  24.             
  25.             int system(string);
  26.             char *string;          óδ»«½¡∩Ѽá∩ ¬«¼á¡ñá
  27.             
  28.                 
  29.                Ä»¿ßá¡¿Ñ.
  30.             
  31.                öπ¡¬µ¿∩  system »ÑαÑñáÑΓ ºáñá¡¡πε ßΓ᫬π string ¬ ¿¡ΓÑα»αÑ-
  32.          ΓáΓ«α𠬫¼á¡ñ ¿ «íαáíáΓδóáÑΓ φΓπ ßΓ᫬π ¬á¬ ¬«¼á¡ñπ MS DOS. öπ¡¬-
  33.          µ¿∩ system ßßδ½áÑΓß∩ ¡á »ÑαѼѡ¡δÑ «¬απªÑ¡¿∩ COMSPEC ¿ PATH, τΓ«-
  34.          íδ αáß»«½«ª¿Γ∞ Σá⌐½ COMMAND.COM, ¬«Γ«αδ⌐ ¿ß»«½∞ºπÑΓß∩ »α¿  óδ»«½-
  35.          ¡Ñ¡¿¿ ¬«¼á¡ñδ string.
  36.             
  37.                 
  38.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  39.             
  40.                àß½¿  string  πß»ÑΦ¡« «Γαáí«Γá½á, Σπ¡¬µ¿∩ system ó«ºóαáΘáÑΓ
  41.          º¡áτÑ¡¿Ñ 0. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ  ¿
  42.          errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  43.                 
  44.             çìÇùàìêà                        àâÄ æî¢æï
  45.  
  46.           E2BIG            æ»¿ß«¬ áαúπ¼Ñ¡Γ«ó ñ½∩ ¬«¼á¡ñδ »αÑóδΦáÑΓ
  47.                            128 íá⌐Γ«ó, ¿½¿ »α«ßΓαá¡ßΓó«, ΓαÑíπѼ«Ñ
  48.                            ñ½∩ ¿¡Σ«α¼áµ¿¿ «¬απªÑ¡¿∩, »αÑóδΦáÑΓ 32è.
  49.                            
  50.           ENOENT           COMMAND.COM ¡Ñ ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡.
  51.                  
  52.           ENOEXEC          öá⌐½   COMMAND.COM   ¡Ñ   ¼«ªÑΓ    íδΓ∞
  53.                            óδ»«½¡Ñ¡¡δ¼ ¿ ¿¼ÑÑΓ ¡ÑóÑα¡δ⌐ Σ«α¼áΓ.
  54.                            
  55.           ENOMEM           ä½∩ óδ»«½¡Ñ¡¿∩ child-»α«µÑßá »á¼∩Γ¿  ¡Ñ
  56.                            ñ«ßΓáΓ«τ¡«, ¿½¿ φΓá  »á¼∩Γ∞    ∩ó½∩ÑΓß∩
  57.                            ºá»«ατÑ¡¡«⌐,  ¿½¿  ßπΘÑßΓóπεΓ  ¡ÑóÑα¡δÑ
  58.                            í½«¬¿, π¬áºδóáεΘ¿Ñ,  τΓ« parent-»α«µÑßß
  59.                            ¡Ñ ºáσóáτÑ¡.
  60.                
  61.  
  62.                                       - 239 -
  63.          
  64.          
  65.  
  66.                æ¼. ΓᬪѠexecl, execle,  execlp,  execv,  execve,  execvp,
  67.          exit, _exit, spawnl, spawnle, spawnlp, spawnlpe, spawnv, spawnve,
  68.          spawnvp.
  69.       
  70.                Åα¿¼Ñα:
  71.             
  72.             #include <process.h>
  73.             
  74.             int result;
  75.       
  76.             
  77.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ñ«íáó½∩ÑΓ ¡«¼Ñα óÑαß¿¿ DOS ¬ log Σá⌐-
  78.          ½π */
  79.             
  80.             result = system("ver >> result.log");
  81.       
  82.       
  83.             
  84.             TAN-TANH
  85.               
  86.             #include <math.h>
  87.             
  88.             double tan(x);       óδτ¿ß½∩ÑΓ Γá¡úѡߠx
  89.             double tanh(x);      óδτ¿ß½∩ÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ Γá¡úѡߠx
  90.             double x;            αáñ¿á¡
  91.             
  92.                Ä»¿ßá¡¿Ñ.
  93.             
  94.                öπ¡¬µ¿¿  tan  ¿ tanh óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« Γá¡úѡߠ¿ ú¿-
  95.          »Ñαí«½¿τÑ߬¿⌐ Γá¡úѡߠx.
  96.            
  97.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  98.             
  99.                öπ¡¬µ¿∩ tan ó«ºóαáΘáÑΓ Γá¡úѡߠx. àß½¿ x í«½∞Φ«⌐,  »α¿  óδ-
  100.          τ¿ß½Ñ¡¿∩σ  ¼«ªÑΓ  ó«º¡¿¬¡πΓ∞  τáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿. é φΓ«¼
  101.          ß½πτáÑ tan óδαáíáΓδóáÑΓ «Φ¿í¬π PLOSS, ¡« ß««íΘÑ¡¿∩  ¡Ñ  »ÑτáΓáÑΓ.
  102.          àß½¿ x ¡áßΓ«½∞¬« í«½∞Φ«⌐, τΓ« «íΘá∩ º¡áτ¿¼«ßΓ∞ αѺπ½∞ΓáΓá ΓÑα∩ÑΓ-
  103.          ß∩, Γ«úñá tan »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ TLOSS ó stderr ¿ ó«ºó-
  104.          αáΘáÑΓ 0. é «í«¿σ ß½πτá∩σ errno πßΓá¡áó½¿óáÑΓß∩ ó ERANGE.
  105.                öπ¡¬µ¿∩  tanh ó«ºóαáΘáÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ Γá¡úѡߠx. é«ºóαá-
  106.          ΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  107.                æ¼.ΓᬪѠacos, asin, atan, atan2, cos, cosh, sin, sinh.
  108.             
  109.                Åα¿¼Ñα:
  110.             
  111.             #include <math.h>
  112.             
  113.             double pi,x,y;
  114.                 
  115.             pi = 3.1415926535;
  116.             x = tan(pi/4.0);     /* x αáóÑ¡ 1.0 */
  117.             y = tanh(x);         /* y αáóÑ¡ 1.6 */
  118.             
  119.  
  120.                                       - 240 -
  121.          
  122.          
  123.       
  124.             
  125.                TEMPNAM - TMPNAM
  126.             
  127.             #include <stdio.h>
  128.             
  129.             char *tmpnam(string);
  130.             char *string;            π¬áºáΓѽ∞ ¡á óαѼѡ¡«Ñ ¿¼∩.
  131.             
  132.             char *tempnam(dir, prefix);
  133.             char *dir;
  134.             char *prefix;
  135.             
  136.                Ä»¿ßá¡¿Ñ.
  137.             
  138.                öπ¡¬µ¿∩ tmpnan úÑ¡Ñα¿απÑΓ ¿¼∩  óαѼѡ¡«ú«  Σá⌐½á.  ¥Γ«  ¿¼∩
  139.          σαá¡¿Γß∩  ó  string.  àß½¿ string ∩ó½∩ÑΓß∩ NULL, »á¼∩Γ∞ ñ½∩ ßΓ᫬
  140.          αẼÑΘáÑΓß∩ »«ßαÑñßΓó«¼ Σπ¡¬µ¿¿ malloc. Åα¿ φΓ«¼, Ñß½¿  ¿ß»«½∞º«-
  141.          óá½áß∞ Σπ¡¬µ¿∩ malloc, »«½∞º«óáΓѽ∞ ßá¼ ∩ó½∩ÑΓß∩ «ΓóÑΓßΓóÑ¡¡δ¼ ºá
  142.          «ßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿.
  143.                æ¿¼ó«½∞¡á∩  ßΓ᫬á, ß«ºñá¡¡á∩ »« tmpnam, ß«ßΓ«¿Γ ¿º µ¿Σα «Γ
  144.          "0" ñ« "9"; τ¿ß½Ñ¡¡«Ñ º¡áτÑ¡¿Ñ φΓ«⌐ ßΓ᫬¿ ¼«ªÑΓ ¿º¼Ñ¡∩Γ∞ß∩ «Γ  1
  145.          ñ« 65535.
  146.                öπ¡¬µ¿∩  tempnam  »«ºó«½∩ÑΓ  »«½∞º«óáΓѽε ß«ºñáΓ∞ óαѼѡ¡δ⌐
  147.          Σá⌐½ ó ñαπú«¼ ñ¿αÑ¬Γ«α¿¿. Prefix ∩ó½∩ÑΓß∩ »α¿ßΓáó¬«⌐ ¬ ¿¼Ñ¡¿ Σá⌐-
  148.          ½á. ¥Γá Σπ¡¬µ¿∩ αáßß¼áΓα¿óáÑΓ Σá⌐½ ß ºáñá¡¡δ¼ ¿¼Ñ¡Ñ¼ ó ñαπú¿σ ñ¿-
  149.          αÑ¬Γ«α¿∩σ, αáß»«½«ªÑ¡¡δσ ó »«α∩ñ¬Ñ ßΓáαΦ¿¡ßΓóá.
  150.             
  151.             
  152.                    ôæïÄéêà                êæÅÄï£çôàî¢ë äêÉàèÆÄÉêë
  153.            
  154.          ôßΓá¡áó½¿óáÑΓß∩    »ÑαѼѡ¡á∩   ä¿αÑ¬Γ«α¿⌐,  «»αÑñѽ∩Ѽδ⌐
  155.          «¬απªÑ¡¿∩  TMP,  ¿ ßπΘÑßΓóπÑΓ   »« ÆîÉ.
  156.          ñ¿αÑ¬Γ«α¿⌐,  «»αÑñѽ∩Ѽδ⌐  »«
  157.          TMP.
  158.         
  159.          ÅÑαѼѡ¡á∩  «¬απªÑ¡¿∩  TMP ¡Ñ   Çαúπ¼Ñ¡Γ dir ñ½∩  tempnam.
  160.          πßΓá¡áó½¿óáÑΓß∩     ¿½¿    ¡Ñ
  161.          ßπΘÑßΓóπÑΓ        ñ¿αÑ¬Γ«α¿⌐,
  162.          «»αÑñѽ∩Ѽδ⌐ »« TMP.
  163.         
  164.          Çαúπ¼Ñ¡Γ  dir  ∩ó½∩ÑΓß∩  NULL   P_tmpdir  ó <stdio.h>.
  165.          ¿½¿  dir  ∩ó½∩ÑΓß∩  ¿¼Ñ¡Ñ¼ ¡Ñ
  166.          ßπΘÑßΓóπεΘÑú« ñ¿αÑ¬Γ«¿∩.
  167.         
  168.          ìÑ ßπΘÑßΓóπÑΓ P_tmpdir.         \tmp.
  169.             
  170.                àß½¿ óßÑ φΓ« «ΓßπΓßΓóπÑΓ, tempnam ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ NULL.
  171.             
  172.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  173.             
  174.                ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ π¬áºáΓѽ∞  ¡á  ßúÑ¡Ñα¿α«óá¡¡«Ñ  ¿¼∩,
  175.          Ñß½¿  ÑßΓ∞  ó«º¼«ª¡«ßΓ∞ ß«ºñáΓ∞ φΓ« ¿¼∩, ¿½¿ Ñß½¿ ¿¼∩ ¡Ñ ∩ó½∩ÑΓß∩
  176.          Ññ¿¡ßΓóÑ¡¡δ¼ (π¡¿¬á½∞¡δ¼). àß½¿ ¿¼∩ ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡« ¿½¿ «¡«
  177.          óßÑúñá ßπΘÑßΓóπÑΓ, Σπ¡¬µ¿¿ tmpnam ¿ tempnam  ó«ºóαáΘáεΓ  º¡áτÑ¡¿Ñ
  178.  
  179.                                       - 241 -
  180.          
  181.          
  182.                NULL
  183.       
  184.                æ¼. ΓᬪѠtmpfile.
  185.             
  186.                Åα¿¼Ñα:
  187.             
  188.             #include <stdio.h>
  189.             
  190.             main ()
  191.             {
  192.             char *name1, *name2;
  193.             
  194.             if ((name1 = tmpnam(NULL)) != NULL)
  195.                printf("%s is safe to use as a temporary file.\n",
  196.                       name1);
  197.             else
  198.                printf("cannot create a unique file name\n");
  199.             
  200.             if ((name2 = tempnam("a:\\tmp", "stq")) != NULL)
  201.                printf("%s is safe to use as a temporary file.\n",
  202.                       name2);
  203.             else
  204.                printf("cannot create a unique file name\n");
  205.             }.
  206.       
  207.             
  208.             
  209.                TELL
  210.             
  211.             #include <io.h>    ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  212.                                Σπ¡¬µ¿¿
  213.             long tell(handle);
  214.             int handle;        handle-α,  ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  215.                                Σá⌐½
  216.             
  217.                Ä»¿ßá¡¿Ñ.
  218.             
  219.                öπ¡¬µ¿∩  tell íÑαÑΓ ΓѬπΘπε »«º¿µ¿ε π¬áºáΓѽ∩ ¡á Σá⌐½ (Ñß½¿
  220.          «¡ ÑßΓ∞), ßó∩ºá¡¡«ú« ß handle. Å«º¿µ¿∩ óδαáªáÑΓß∩ ¬á¬ τ¿ß½«  íá⌐-
  221.          Γ«ó «Γ ¡áτá½á Σá⌐½á.
  222.             
  223.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  224.             
  225.                öπ¡¬µ¿∩  tell ó«ºóαáΘáÑΓ ΓѬπΘπε »«º¿µ¿ε. é«ºóαáΘáѼ«Ñ º¡á-
  226.          τÑ¡¿Ñ -1L π¬áºδóáÑΓ ¡á «Φ¿í¬π  ¿ errno πßΓá¡áó½¿óáÑΓß∩  ó  EBADF,
  227.          ¬«Γ«α«Ñ «»αÑñѽ∩ÑΓ ¡ÑóÑα¡δ⌐ áαúπ¼Ñ¡Γ handle-αá Σá⌐½á. ä½∩ πßΓα«⌐-
  228.          ßΓó,  ¡Ñ  »α¿ß»«ß«í½Ñ¡¡δσ ¬ »«¿ß¬π (Γᬿσ ¬á¬ ΓÑନ¡á½δ ¿ »α¿¡ΓÑ-
  229.          αδ), ó«ºóαáΘáѼδÑ º¡áτÑ¡¿∩ ¡Ñ «»αÑñѽѡδ.
  230.                æ¼.ΓᬪѠftell, lseek
  231.             
  232.                Åα¿¼Ñα:
  233.             
  234.             #include<io.h>
  235.             #include<stdio.h>
  236.             #include<fcntl.h>
  237.  
  238.                                       - 242 -
  239.          
  240.          
  241.             int fh;
  242.             long position;
  243.             
  244.             fh = open ("data", O_RDONLY);
  245.             .
  246.             .
  247.             .
  248.             position = tell (fh);
  249.             /* ºá»«¼¿¡áÑΓ ΓѬπΘπε »«º¿µ¿ε */
  250.             .
  251.             .
  252.             .
  253.             lseek (fh, position,0);
  254.             /* ¡áσ«ñ¿Γ »αÑñδñπΘπε »«º¿µ¿ε */
  255.       
  256.       
  257.             
  258.             
  259.                TIME
  260.             
  261.             #include <time.h>  ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  262.                                Σπ¡¬µ¿¿
  263.             long time(timeptr);
  264.             long *timeptr;     »á¼∩Γ∞ ñ½∩ σαá¡Ñ¡¿∩ óαѼѡ¿
  265.             
  266.                Ä»¿ßá¡¿Ñ.
  267.             
  268.                öπ¡¬µ¿∩ time ó ß««ΓóÑΓßΓó¿¿ ß ß¿ßΓѼ¡δ¼¿ τáßἿ  ó«ºóαáΘáÑΓ
  269.          ¬«½¿τÑßΓó«  ßѬπ¡ñ,  »α«ΦÑñΦ¿σ  «Γ  00:00:00  º¡áτÑ¡¿∩ óαѼѡ¿ »«
  270.          âα¿¡ó¿τπ,Γ.Ñ. ß 1 ∩¡óáα∩ 1980 ú«ñá. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ σαá¡¿Γ-
  271.          ß∩ ó αáß»«½«ªÑ¡¿¿, ºáñá¡¡«¼ »« timeptr. àß½¿ ó«ºóóαáΘáѼ«Ñ º¡áτÑ-
  272.          ¡¿Ñ ¡Ñ ºá»«¼¡Ñ¡«, timeptr ∩ó½∩ÑΓß∩ NULL.
  273.             
  274.             
  275.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  276.       
  277.                öπ¡¬µ¿∩ time ó«ºóαáΘáÑΓ »α«⌐ñÑ¡¡«Ñ óαѼ∩ (ó ßѬπ¡ñáσ). é«º-
  278.          óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  279.                æ¼.ΓᬪѠasctime, ftime, gmtime, localtime, utime.
  280.             
  281.                Åα¿¼Ñα:
  282.             
  283.             #include <time.h>
  284.             #include <stdio.h>
  285.             
  286.             long ltime;
  287.             
  288.             time(<ime);
  289.             printf("the time is %s\n", ctime(<ime));
  290.             
  291.       
  292.       
  293.             
  294.                TMPFILE
  295.             
  296.  
  297.                                       - 243 -
  298.          
  299.          
  300.             #include <stdio.h>
  301.             
  302.             FILE *tmpfile();           º¡áτÑ¡¿Ñ,   π¬áºδóáεΘÑÑ  ¡á
  303.                                        ßΓαπ¬Γπαπ   Γ¿»á   FILE.
  304.             
  305.                Ä»¿ßá¡¿Ñ.
  306.             
  307.                öπ¡¬µ¿∩ tmpfile ß«ºñáÑΓ óαѼѡ¡δ⌐ Σá⌐½ ¿ ó«ºóαáΘáÑΓ  π¬áºá-
  308.          Γѽ∞  ¡á  φëà Σá⌐½.  àß½¿  Σá⌐½  ¡Ñ  ¼«ªÑΓ íδΓ∞ «Γ¬αδΓ, Σπ¡¬µ¿∩
  309.          tmpfile ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ NULL. ¥Γ«Γ óαѼѡ¡δ⌐ Σá⌐½  áóΓ«¼áΓ¿-
  310.          τÑ߬¿ πñá½∩ÑΓß∩, ¬«úñá »α«úαἼᠺá¬á¡τ¿óáÑΓß∩ ¡«α¼á½∞¡«  ¿½¿ Ñß-
  311.          ½¿ óδºóá¡á Σπ¡¬µ¿∩ rmtmp, á ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐ ¡Ñ íδ½ ¿º-
  312.          ¼Ñ¡Ñ¡.
  313.                éαѼѡ¡δ⌐ Σá⌐½ «Γ¬αδóáÑΓß∩ ó αѪ¿¼Ñ "w".
  314.             
  315.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  316.             
  317.                ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »«Γ«¬. àß½¿ Σá⌐½ ¡Ñ «Γ-
  318.          ¬αδóáÑΓß∩ - ó«ºóαáΘáÑΓß∩ NULL-π¬áºáΓѽ∞.
  319.                æ¼. ΓᬪѠtmpnam, tempnam, rmtmp.
  320.             
  321.                Åα¿¼Ñα:
  322.             
  323.             #include <stdio.h>
  324.       
  325.             FILE *stream;
  326.             char tmpstring[] = "String to be temporary written".
  327.             
  328.             main ()
  329.             
  330.             {
  331.             if ((stream = tmpfile()) == NULL)
  332.                 perror("Couldn't make temporary file");
  333.             else
  334.                 fprintf(stream, "%s", tmpstring);
  335.             }.
  336.                                                                   
  337.                
  338.             
  339.                TOASCII-_TOUPPER
  340.            
  341.             #include <ctype.h>
  342.             int toascii(c)        »αÑ«íαáºπÑΓ "c"  ó  ß¿¼ó«½  ASCII
  343.             
  344.             int tolower(c)        »αÑ«íαáºπÑΓ  "c" ó ß¿¼ó«½ óÑασ¡Ñú«
  345.                                   αÑú¿ßΓαá   (ó   ßΓα«τ¡πε íπ¬óπ),
  346.                                   Ñß½¿ φΓ« ó«º¼«ª¡«
  347.             
  348.             int _tolower(c)       »αÑ«íαáºπÑΓ "c"  ó ßΓα«τ¡πε  íπ¬óπ
  349.             
  350.             int toupper(c)        »αÑ«íαáºπÑΓ "c"  ó ß¿¼ó«½  ¡¿ª¡Ñú«
  351.                                   αÑú¿ßΓαá (»α«»¿ß¡πε íπ¬óπ), Ñß½¿
  352.                                   φΓ« ó«º¼«ª¡«
  353.             
  354.             int _toupper(c)       »αÑ«íαáºπÑΓ "c"  ó ß¿¼ó«½  ¡¿ª¡Ñú«
  355.  
  356.                                       - 244 -
  357.          
  358.          
  359.                                   αÑú¿ßΓαá
  360.             
  361.             int c;                »αÑ«íαáºπѼδ⌐ ß¿¼ó«½
  362.                
  363.                
  364.                Ä»¿ßá¡¿Ñ.
  365.                 
  366.                îá¬α« toascii, tolower, toupper ¿ _toupper »αÑ«íαáºπεΓ ß¿¼-
  367.          ó«½ "c" Γá¬, ¬á¬ «»¿ßá¡« ¡¿ªÑ.
  368.                îá¬α« toascii πßΓá¡áó½¿óáÑΓ »ÑαóδÑ 7 í¿Γ«ó "c" ó ¡π½∞  Γá¬,
  369.          τΓ«  »αÑ«íαẫóá¡¡«Ñ  º¡áτÑ¡¿Ñ  ß««ΓóÑΓßΓóπÑΓ ß¿¼ó«½π ASCII. àß½¿
  370.          "c" πªÑ ß««ΓóÑΓßΓóπÑΓ ASCII, Γ« «¡ ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  371.                îá¬α« tolower »αÑ«íαáºπÑΓ "c" ó ßΓα«τ¡πε  íπ¬óπ,  Ñß½¿  "c"
  372.          ß««ΓóÑΓßΓóπÑΓ »α«»¿ß¡«⌐ ½¿ΓÑαÑ. ê¡áτÑ - "c" ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  373.                îá¬α«  _tolower  ∩ó½∩ÑΓß∩  óÑαß¿Ñ⌐  tolower, ¿ß»«½∞ºπεΘÑ⌐ß∩
  374.          Γ«½∞¬« Γ«úñá, ¬«úñá "c" - »α«»¿ß¡á∩ íπ¬óá. àß½¿ φΓ« ¡Ñ  Γá¬,  αÑ-
  375.          ºπ½∞ΓáΓ óδ»«½¡Ñ¡¿∩ _tolower ¡Ñ «»αÑñѽѡ.
  376.                îá¬α« toupper »αÑ«íαáºπÑΓ "c" ó ßΓα«τ¡πε íπ¬óπ, Ñß½¿ "c" ¡Ñ
  377.          ∩ó½∩ÑΓß∩ ßΓα«τ¡«⌐ íπ¬ó«⌐. ê¡áτÑ - "c" ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
  378.                _Toupper ∩ó½∩ÑΓß∩ óÑαß¿Ñ⌐ toupper, ¿ß»«½∞ºπѼ«⌐ Γ«½∞¬« Γ«ú-
  379.          ñá,  ¬«úñá  "c"  -  ßΓα«τ¡á∩ íπ¬óá. àß½¿ "c" ¡Ñ ∩ó½∩ÑΓß∩ ßΓα«τ¡«⌐
  380.          íπ¬ó«⌐, Γ« αѺπ½∞ΓáΓ ¡Ñ «»αÑñѽѡ.
  381.                
  382.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  383.                
  384.                îá¬α« toascii, tolower, toupper ¿ _toupper ó«ºóαáΘáεΓ  »αÑ-
  385.          «íαẫóá¡¡δ⌐  ß¿¼ó«½  "c". é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿
  386.          ¡ÑΓ.
  387.                æ¼.ΓᬪѠ  isalnum,  isalpha,  isascii,  iscntrl,  isdigit,
  388.          isgraph, islower, isprint, ispunct, isspace, isupper, isxdigit.
  389.                
  390.                çá¼Ñτá¡¿Ñ. ¥Γ¿  »α«µÑñπαδ  αÑ὿ºπεΓß∩  ¬á¬  ¼á¬α«.  Äñ¡á¬«
  391.          tolower  ¿  toupper  ΓᬪѠαÑ὿ºπεΓß∩ ¿ ¬á¬ Σπ¡¬µ¿¿, Γ.¬. óÑαß¿¿
  392.          ¼á¬α« ¡Ñ¬«ααÑ¬Γ¡« «íαáíáΓδóáεΓ áαúπ¼Ñ¡Γδ ß  »«í«τ¡δ¼¿  φΣΣѬΓἿ.
  393.          éÑαß¿¿ Σπ¡¬µ¿⌐ ¼«úπΓ íδΓ∞ ¿ß»«½∞º«óá¡δ, Ñß½¿ πñ὿Γ∞ ¼á¬α««»αÑñÑ-
  394.          ½Ñ¡¿∩  ñ¿αÑ¬Γ¿ó«⌐ #undef ¿½¿ ¡Ñ »«ñ¬½ετáΓ∞ <ctype.h>. Ä»αÑñѽѡ¿∩
  395.          Σπ¡¬µ¿⌐ tolower ¿ toupper ñá¡δ ó <stdlib.h>.
  396.                
  397.                Åα¿¼Ñα:
  398.                
  399.                #include <stdio.h>
  400.                #include <ctype.h>
  401.                int ch;
  402.                
  403.                /*ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ á¡á½¿º¿απεΓ óßÑ
  404.          **ß¿¼ó«½δ ¼Ñªñ𠬫ñἿ 0σ0 ¿ 0σ7f.
  405.          **îá¬α« toupper ¿ tolower »α¿¼Ñ¡∩εΓß∩
  406.          **ñ½∩  ½εíδ󠬫ñ«ó.  _Toupper ¿ _tolower
  407.          **»α¿¼Ñ¡∩εΓß∩ Γ«½∞¬« ñ½∩ ¬«ñ«ó, ¿¼ÑεΘ¿σ
  408.          **ß¼δß½ */
  409.                
  410.                for (ch=0; ch<=0x7f; ch++)  {
  411.                    printf (" toupper=%#04x", toupper (ch));
  412.                    printf (" tolower=%#04x", tolower (ch));
  413.                
  414.  
  415.                                       - 245 -
  416.          
  417.          
  418.                    if (islower(ch))
  419.                       printf(" _toupper=%#04x", _toupper(ch));
  420.                    if (isupper(ch))
  421.                       printf("_tolower=%#40x", _tolower(ch));
  422.                    putchar ('\n');
  423.                    }
  424.             
  425.       
  426.             
  427.                TZSET
  428.             
  429.             #include <time.h>  ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  430.                                Σπ¡¬µ¿¿
  431.             
  432.             void tzset();
  433.             
  434.             int daylight;      Σ½áú »ÑαÑσ«ñá ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ
  435.                                óαѼ∩
  436.             long timezone;     αẽ¿τ¿Ñ ó ßѬπ¡ñáσ «Γ GMT
  437.             char *tzname[2]l   ßΓ᫬¿ ΓαÑσíπ¬óÑ¡¡δσ óαѼѡ¡δσ
  438.                                º«¡
  439.             
  440.                Ä»¿ßá¡¿Ñ.
  441.             
  442.                öπ¡¬µ¿∩ tzset ¿ß»«½∞ºπÑΓ ΓѬπΘπε πßΓá¡«ó¬π »ÑαѼѡ¡«⌐ «¬απ-
  443.          ªÑ¡¿∩ TZ, τΓ«íδ ¡áº¡áτ¿Γ∞  º¡áτÑ¡¿∩  ΓαѼ  »ÑαѼѡ¡δ¼:  daylight,
  444.          timezone,  tzname.  ¥Γ¿  »ÑαѼѡ¡δÑ ¿ß»«½∞ºπεΓß∩ Σπ¡¬µ¿∩¼¿ ftime,
  445.          localtime ñ½∩ ¿º¼Ñ¡Ñ¡¿∩ º¡áτÑ¡¿∩ óαѼѡ¿  »«  âα¿¡ó¿τπ  (GMT)  ¡á
  446.          ¼ÑßΓ¡«Ñ óαѼ∩.
  447.                ç¡áτÑ¡¿Ñ¼ »ÑαѼѡ¡«⌐ «¬απªÑ¡¿∩ TZ ñ«½ª¡« íδΓ∞ ΓαÑσíπ¬óÑ¡¡«Ñ
  448.          ¿¼∩  óαѼѡ¡«⌐  º«¡δ,  Γᬫ⌐ ¬á¬ PST, ß½ÑñπεΘÑ⌐ ºá ¡Ñ«í∩ºáΓѽ∞¡δ¼
  449.          º¡á¬«óδ¼ τ¿ß½«¼, ºáñáεΘ¿¼ αẽ¿τ¿Ñ ó τáßáσ ¼Ñªñπ º¡áτÑ¡¿Ñ¼ óαѼÑ-
  450.          ¡¿ »« âα¿¡ó¿τπ ¿ ¼ÑßΓ¡δ¼ óαѼѡѼ.ù¿ß½« ¼«ªÑΓ ¿ñΓ¿ ºá ΓαÑσíπ¬óÑ¡-
  451.          ¡«⌐ º«¡«⌐ »ÑαÑσ«ñá ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩, Γᬫ⌐ ¬á¬ PDT.  ìá»α¿-
  452.          ¼Ñα,  "PST8PDT"  »αÑñßΓáó½∩ÑΓ  ñÑ⌐ßΓó¿Γѽ∞¡«Ñ  º¡áτÑ¡¿Ñ  ñ½∩ º«¡δ
  453.          Pacific time.
  454.                è«úñá  óδºδóáÑΓß∩  tzset,  »ÑαѼѡ¡δ¼  daylight,  timezone,
  455.          tzname ¡áº¡áτáεΓß∩ ß½ÑñπεΘ¿Ñ º¡áτÑ¡¿∩:
  456.             
  457.             ÅÑαѼѡ¡á∩                      ç¡áτÑ¡¿Ñ
  458.                            
  459.             timezone       Éẽ¿τ¿Ñ  ¼Ñªñπ  º¡áτÑ¡¿Ñ¼  óαѼѡ¿  »«
  460.                            âα¿¡ó¿τπ ¿ ¼ÑßΓ¡δ¼ óαѼѡѼ
  461.                            
  462.             daylight       ìÑ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ ó πßΓá¡«ó¬Ñ TZ
  463.                            «»αÑñѽѡ  »ÑαÑσ«ñ   ¡á   ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ
  464.                            óαѼ∩; ¿¡áτÑ -0
  465.                            
  466.             tzname[0]      æΓ᫬«ó«Ñ     º¡áτÑ¡¿Ñ,    «»αÑñѽ∩εΘÑÑ
  467.                            ΓαÑσíπ¬óÑ¡¡«Ñ  ¿¼∩  óαѼѡ¡«⌐  º«¡δ  ¿º
  468.                            πßΓᡫ󬿠TZ
  469.                            
  470.             tzname[1]      æΓ᫬«ó«Ñ  º¡áτÑ¡¿Ñ,  «»αÑñѽ∩εΘÑÑ º«¡π
  471.                            »ÑαÑσ«ñá ¡á  ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ  óαѼ∩,  ¿½¿
  472.                            »πßΓπε  ßΓ᫬π, Ñß½¿ φΓá º«¡á »α«»πΘÑ¡á
  473.                            ó πßΓá¡«ó¬Ñ TZ
  474.                
  475.  
  476.                                       - 246 -
  477.          
  478.          
  479.             
  480.  
  481.                àß½¿   TZ  ¡Ñ  πßΓá¡«ó½Ñ¡á,  »«  π¼«½τá¡¿ε  πßΓá¡áó½¿óáÑΓß∩
  482.          PST8PDT, ¬«Γ«αá∩ ß««ΓóÑΓßΓóπÑΓ º«¡Ñ Pacific  time.  Å«  π¼«½τá¡¿ε
  483.          ñ½∩ daylight πßΓá¡áó½¿óáÑΓß∩ 1, timezone - 28800, ñ½∩ tzname[0] -
  484.          "PST", tzname[1] - "PDT".
  485.             
  486.       
  487.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  488.             
  489.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  490.                æ¼.ΓᬪѠasctime, ftime, localtime.
  491.             
  492.                Åα¿¼Ñα:
  493.             
  494.             #include <time.h>
  495.             
  496.             int daylight;
  497.             llong timezone;
  498.             char *tzname[];
  499.             .
  500.             .
  501.             .
  502.             putenv("TZ=EST5");
  503.             tzset();
  504.       
  505.             
  506.                ULTOA
  507.                 
  508.             #include <stdlib.h>           ΓαÑíπÑΓß∩   Γ«½∞¬«   ñ½∩
  509.                                           «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  510.             char ultoa(value, string, radix);
  511.                 
  512.             unsigned long value;          »αÑ«íαáºπѼ«Ñ τ¿ß½«
  513.             char *string;                 ßΓ᫬á αѺπ½∞ΓáΓá
  514.             int radix;                    «ß¡«óá¡¿Ñ value
  515.             
  516.                Ä»¿ßá¡¿Ñ.
  517.                
  518.                öπ¡¬µ¿∩ ultoa »αÑ«íαáºπÑΓ ß¿¼ó«½δ value ó ß¿¼ó«½∞¡πε  ßΓα«-
  519.          ¬π, «¬á¡τ¿óáεΘπεß∩ NULL-ß¿¼ó«½«¼, ¿ ºá»«¼¿¡áÑΓ ÑÑ ó string. ÅÑαÑ-
  520.          »«½¡Ñ¡¿Ñ  ¡Ñ  ¬«¡Γα«½¿απÑΓß∩. Çαúπ¼Ñ¡Γ radix «»αÑñѽ∩ÑΓ «ß¡«óá¡¿Ñ
  521.          ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ value. Ä¡ ¼«ªÑΓ »α¿¡¿¼áΓ∞ º¡áτÑ¡¿∩ «Γ 2 ñ« 36.
  522.                 
  523.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  524.                 
  525.                öπ¡¬µ¿∩  ultoa ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π string. é«ºó-
  526.          αáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  527.                æ¼.ΓᬪѠitoa, ltoa.
  528.                 
  529.                çá¼Ñτá¡¿Ñ: Åá¼∩Γ∞, «Γó«ñ¿¼á∩ »«ñ string, ñ«½ª¡á íδΓ∞  í«½∞-
  530.          ΦÑ,  τѼ  ΓαÑíπÑΓß∩  ñ½∩  ó«ºóαáΘáѼ«⌐ ßΓ᫬¿. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ
  531.          ßΓ᫬π ñ½¿¡«⌐ ñ« 33 íá⌐Γ«ó.
  532.                 
  533.  
  534.                                       - 247 -
  535.          
  536.          
  537.                Åα¿¼Ñα:
  538.                 
  539.                 #include <stdlib.h>
  540.                 
  541.                 int radix = 16;
  542.                 char buffer [40];
  543.                 char *p;
  544.                         /* p íπñÑΓ "501d9138 */
  545.                 p=ultoa (1344115000L, buffer, radix);
  546.       
  547.       
  548.             
  549.                UMASK
  550.             
  551.             #include <sys\types.h>
  552.             #include <sys\stat.h>
  553.             #include <io.h>       ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  554.                                   Σπ¡¬µ¿¿
  555.             
  556.             int umask(pmode);
  557.             int pmode;            ñ«ßΓπ», αáºαÑΦÑ¡¡δ⌐ »« π¼«½τá¡¿ε
  558.             
  559.                Ä»¿ßá¡¿Ñ.
  560.             
  561.                öπ¡¬µ¿∩ umask πßΓá¡áó½¿óáÑΓ  ñ½∩  ΓѬπΘÑú«  »α«µÑßßá  ¼á߬π
  562.          αáºαÑΦÑ¡¡«ú«  ñ«ßΓπ»á  ñ½∩ Σá⌐½á ó αѪ¿¼, ¬«Γ«αδ⌐ «»αÑñѽ∩ÑΓß∩ »«
  563.          pmode. îá߬á αáºαÑΦÑ¡¡«ú« ñ«ßΓπ»á  ¿ß»«½∞ºπÑΓß∩  ñ½∩  ¼«ñ¿Σ¿¬áµ¿¿
  564.          πßΓá¡«ó½Ñ¡¡«ú«  ñ«ßΓπ»á  ñ½∩  ¡«óδσ Σá⌐½«ó, ß«ºñá¡¡δσ »«ßαÑñßΓó«¼
  565.          Σπ¡¬µ¿⌐ create, open ¿½¿ sopen. àß½¿ í¿Γ ó ¼á߬ѠαáóÑ¡ 1, Γ«  ß«-
  566.          «ΓóÑΓßΓóπεΘ¿⌐  Ñ¼π í¿Γ ó º¡áτÑ¡¿¿ αѪ¿¼á ñ«ßΓπ»á ¬ Σá⌐½π πßΓá¡áó-
  567.          ½¿óáÑΓß∩ ó 0 (ºá»αÑΘÑ¡¿Ñ). àß½¿ í¿Γ ó ¼á߬ѠαáóÑ¡ 0, ß««ΓóÑΓßΓóπ-
  568.          εΘ¿⌐ Ñ¼π í¿Γ «ßΓáÑΓß∩ ¡Ñ¿º¼Ñ¡Ñ¡¡δ¼. îá߬á ñ«ßΓπ»á ñ½∩ ¡«ó«ú« Σá⌐-
  569.          ½á ¡Ñ πßΓá¡«ó¿Γß∩, »«¬á Σá⌐½ ¡Ñ ºá¬α«ÑΓß∩ σ«Γ∩ íδ «ñ¿¡ αáº. Çαúπ-
  570.          ¼Ñ¡Γ pmode ∩ó½∩ÑΓß∩ ¬«¡ßΓá¡Γ¡δ¼ óδαáªÑ¡¿Ñ¼, ß«ñÑαªáΘ¿¼  «ñ¡π  ¿½¿
  571.          «íÑ  ¼á¡¿ΣÑßΓ¡δÑ  ¬«¡ßΓá¡Γδ  S_IWRITE  ¿  S_IREAD, «»αÑñѽѡ¡δÑ ó
  572.          <sys\stat.h>.è«úñá ºáñá¡δ «íÑ ¬«¡ßΓá¡Γδ, «¡¿ «íΩÑñ¿¡∩εΓß∩ ½«ú¿τÑß-
  573.          ¬¿¼ «»αáΓ«α«¼ êïê(:).
  574.             
  575.                ç¡áτÑ¡¿Ñ áαúπ¼Ñ¡Γá pmode »α¿ó«ñ¿Γß∩ ¡¿ªÑ.
  576.             
  577.          ç¡áτÑ¡¿Ñ                          àú« ß¼δß½
  578.            
  579.          S_IWRITE           çỿß∞ ¡Ñ ñ«»π߬áÑΓß∩ (Σá⌐½ Γ«½∞¬«  ñ½∩
  580.                             τΓÑ¡¿∩)
  581.             
  582.          S_IREAD            ùΓÑ¡¿Ñ ¡Ñ ñ«»π߬áÑΓß∩ (Σá⌐½ Γ«½∞¬«  ñ½∩
  583.                             ºá»¿ß¿)
  584.  
  585.             
  586.                ìá»α¿¼Ñα, Ñß½¿ ó ¼á߬ѠπßΓá¡«ó½Ñ¡ í¿Γ ºá»¿ß¿,  ½εíδÑ  ¡«óδÑ
  587.          Σá⌐½δ íπñπΓ ñ«ßΓπ»¡δ ñ½∩ τΓÑ¡¿∩.
  588.             
  589.                çá¼Ñτá¡¿Ñ.  é MS DOS óßÑ Σá⌐½δ ñ«ßΓπ»¡δ ñ½∩ τΓÑ¡¿∩, »«φΓ«¼π
  590.          ñ«ßΓπ» Γ«½∞¬« »« ºá»¿ß¿ ºáñáΓ∞ ¡Ñ󫺼«ª¡«.  ¥Γ«  «í«º¡áτáÑΓ,  τΓ«
  591.          πßΓá¡«ó¬á í¿Γá τΓÑ¡¿∩ ó umask ¡Ñ ¿¼ÑÑΓ ß¼δß½á.
  592.  
  593.                                       - 248 -
  594.          
  595.          
  596.       
  597.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  598.             
  599.                öπ¡¬µ¿∩ umask ó«ºóαáΘáÑΓ »αÑñδñπΘÑÑ º¡áτÑ¡¿Ñ pmode. é«ºóαá-
  600.          ΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  601.                æ¼.ΓᬪѠchmod, creat, mkdir, open.
  602.             
  603.             
  604.                Åα¿¼Ñα:
  605.       
  606.             #include <sys\types.h>
  607.             #include <sys\stat.h>
  608.             #include <io.h>
  609.             
  610.             int oldmask;
  611.             
  612.             oldmask=umask(S_IWRITE);
  613.             /* ß«ºñáΓ∞ Σá⌐½δ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ */
  614.             
  615.       
  616.             
  617.                UNGETC
  618.             
  619.             #include <stdio.h>
  620.             
  621.             int ungetc(c, stream);
  622.             int c;                     ó«ºóαáΘáѼδ⌐ ß¿¼ó«½
  623.             
  624.             FILE *stream;              π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ Γ¿»á
  625.                                        FILE
  626.  
  627.                Ä»¿ßá¡¿Ñ.
  628.             
  629.                öπ¡¬µ¿∩ ungetc ó«ºóαáΘáÑΓ ß¿¼ó«½ "c" ó ºáñá¡¡δ⌐ »«Γ«¬ óó«ñá
  630.          stream. Stream ñ«½ªÑ¡ íδΓ∞ íπΣÑਧ«óá¡¡δ¼ ¿ «Γ¬αδΓδ¼ ñ½∩  τΓÑ¡¿∩.
  631.          Å«ß½ÑñπεΘá∩  «»Ñαᵿ∩  τΓÑ¡¿∩ ¿º stream ¡áτ¿¡áÑΓß∩ ß ß¿¼ó«½á "c".
  632.          EOF óÑα¡πΓ∞ ó »«Γ«¬ »«ßαÑñßΓó«¼ ¿ß»«½∞º«óá¡¿∩ ungetc ¡Ñ½∞º∩.  ¥Γá
  633.          Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ «Φ¿í¬¿, Ñß½¿ ¿º stream ¡¿τÑú« ¡Ñ »α«-
  634.          τ¿Γá¡«   ¿½¿  Ñß½¿ "c" ¡áºáñ ¡Ñ ó«ºóαáΘÑ¡. æ¿¼ó«½δ, αẼÑΘáѼδÑ ó
  635.          »«Γ«¬Ñ »«ßαÑñßΓó«¼ ungetc, ¼«úπΓ íδΓ∞  π¡¿τΓ«ªÑ¡δ,  Ñß½¿  Σπ¡¬µ¿¿
  636.          fseek ¿½¿ rewind óδºóá¡δ »ÑαÑñ ßτ¿Γδó᡿Ѽ ß¿¼ó«½á ¿º stream.
  637.             
  638.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  639.             
  640.                ¥Γá  Σπ¡¬µ¿∩  ó«ºóαáΘáÑΓ áαúπ¼Ñ¡Γ ß¿¼ó«½á "c". é«ºóαáΘáѼ«Ñ
  641.          º¡áτÑ¡¿Ñ EOF ßó¿ñÑΓѽ∞ßΓóπÑΓ «  ¡Ñπñáτ¡«¼  ó«ºóαáΘÑ¡¿¿  ºáñá¡¡«ú«
  642.          ß¿¼ó«½á.
  643.                æ¼. ΓᬪѠgetc, getchar, putc, putchar.
  644.             
  645.                Åα¿¼Ñα:
  646.             
  647.             #inc <stdio.h>
  648.             #include <ctype.h>
  649.             
  650.             FILE *stream;
  651.  
  652.                                       - 249 -
  653.          
  654.          
  655.             int ch;
  656.             int result = 0;
  657.             .
  658.             .
  659.             .
  660.                /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óδí¿αáεΓ ñÑß∩Γ¿τ¡«Ñ µÑ½«Ñ ¿º  »«Γ«¬á
  661.          stream */
  662.             
  663.             while ((ch = getc(stream)) != EOF && isdigit(ch))
  664.                   result = result * 10 + ch - '0';
  665.             
  666.             if (ch != EOF)
  667.                ungetc(ch, stream);
  668.                /* ó«ºóαáΘáÑΓ ¡áºáñ ¡Ñ ñÑß∩Γ¿τ¡«Ñ µÑ½«Ñ. */
  669.          
  670.                
  671.             UNGETCH
  672.             
  673.             #include <conio.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  674.                                    Σπ¡¬µ¿¿
  675.             
  676.             int ungetch(c);
  677.             int c;                 ó«ºóαáΘáѼδ⌐ ß¿¼ó«½
  678.             
  679.                Ä»¿ßá¡¿Ñ.
  680.             
  681.                öπ¡¬µ¿∩  ungetch ó«ºóαáΘáÑΓ ß¿¼ó«½ "c" ¡á ¬«¡ß«½∞ ¿ «»αÑñÑ-
  682.          ½∩ÑΓ Ñú« ¬á¬ ß½ÑñπεΘ¿⌐ τ¿ΓáѼδ⌐ ß¿¼ó«½. öπ¡¬µ¿∩ ungetch ¡Ñ óδ»«½-
  683.          ¡∩ÑΓß∩, Ñß½¿ »ÑαÑñ ß½ÑñπεΘ¿¼ τΓÑ¡¿Ñ¼ «¡á  óδºδóáÑΓß∩  í«½ÑÑ   τѼ
  684.          «ñ¿¡ αáº.
  685.             
  686.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  687.             
  688.                öπ¡¬µ¿∩  ungetch ó«ºóαáΘáÑΓ ß¿¼ó«½ "c", Ñß½¿ Σπ¡¬µ¿∩ πñáτ¡«
  689.          «Γαáí«Γá½á. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ EOF π¬áºδóáÑΓ ¡á «Φ¿í¬π.
  690.                æ¼.ΓᬪѠcscanf, getch, getche.
  691.  
  692.                Åα¿¼Ñα:
  693.             
  694.             #include <conio.h>
  695.             #include <ctype.h>
  696.             
  697.             char bufffer[100];
  698.             int count=0;
  699.             int ch;
  700.             
  701.                /*  ß½ÑñπεΘ¿⌐ ¬«ñ íÑαÑΓ «í«º¡áτÑ¡¿Ñ, «úαá¡¿τÑ¡¡«Ñ »α«íѽἿ
  702.          ¿½¿ ¡«ó묨 ßΓα«¬á¼¿, ¿º ¬½áó¿áΓπαδ */
  703.             
  704.             ch = getche();
  705.             
  706.             while (isspace(ch))
  707.                 ch = getche();
  708.             
  709.             while (count < 99)
  710.  
  711.                                       - 250 -
  712.          
  713.          
  714.             {  if (isspase(ch))
  715.                break;
  716.             
  717.                buffer[count++] = ch;
  718.                ch = getche();
  719.             }
  720.             
  721.             ungetch(ch);
  722.             buffer[count] = '\0';
  723.       
  724.             
  725.                UNLINK
  726.             
  727.             #include <io.h>     ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩ «íΩ∩ó½Ñ¡¿∩
  728.                                 Σπ¡¬µ¿¿
  729.             #include <stdio.h>  ¿ß»«½∞ºπÑΓ   ½¿í«   <io.h>,  ½¿í«
  730.                                 <stdio.h>
  731.             
  732.             int unlink(pathname);
  733.             char *pathname;     path-¿¼∩ πñá½∩Ѽ«ú« Σá⌐½á
  734.             
  735.                Ä»¿ßá¡¿Ñ.
  736.             
  737.                öπ¡¬µ¿∩ unlink πñá½∩ÑΓ Σá⌐½, «»αÑñѽѡ¡δ⌐ »« pathname.
  738.             
  739.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  740.             
  741.                öπ¡¬µ¿∩ unlink ó«ºóαáΘáÑΓ 0, Ñß½¿ Σá⌐½ πß»ÑΦ¡« πñá½Ñ¡. é«º-
  742.          óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ  ¿ errno πßΓá¡áó-
  743.          ½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  744.  
  745.            ç¡áτÑ¡¿Ñ                         àú« ß¼δß½
  746.             
  747.           EACCES             Path-¿¼∩ «»αÑñѽ∩ÑΓ ñ¿αÑ¬Γ«α¿⌐ ¿½¿ Σá⌐½
  748.                              Γ«½∞¬« ñ½∩ τΓÑ¡¿∩
  749.             
  750.           ENOENT             öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«
  751.            
  752.                æ¼.ΓᬪѠclose, remove.
  753.             
  754.                Åα¿¼Ñα:
  755.             
  756.             #include <io.h>
  757.             #include <stdio.h>
  758.             
  759.             int result;
  760.             
  761.             result=unlink("tmpfile");
  762.             if (result == -1)
  763.               perror("couldn't delete tmpfile");
  764.       
  765.             
  766.                UTIME
  767.             
  768.             #include <sys\types.h>
  769.  
  770.                                       - 251 -
  771.          
  772.          
  773.             #include <sys\utime.h>
  774.             
  775.             int utime(pathname, times);
  776.             char *pathname;                  path-¿¼∩ Σá⌐½á
  777.             struct utimbuf *times;           π¬áºáΓѽ∞ ¡á σαá¡¿¼δÑ
  778.                                              º¡áτÑ¡¿∩ óαѼѡ¿
  779.             
  780.                Ä»¿ßá¡¿Ñ.
  781.             
  782.                öπ¡¬µ¿∩ utime πßΓá¡áó½¿óáÑΓ óαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐½á,  ¬«Γ«-
  783.          αδ⌐  «»αÑñѽ∩ÑΓß∩ »« pathname. Åα«µÑßß ñ«½ªÑ¡ ¿¼ÑΓ∞ ñ«ßΓπ» »« ºá-
  784.          »¿ß¿ ¬ Σá⌐½π, ¿¡áτÑ   óαѼ∩ ¡Ñ íπñÑΓ ¿º¼Ñ¡∩Γ∞ß∩.
  785.                Å«ß¬«½∞¬π ßΓαπ¬Γπαá utimbuf ß«ñÑαª¿Γ »«½Ñ óαѼѡ¿  ñ«ßΓπ»á,
  786.          ó MS DOS πßΓá¡áó½¿óáÑΓß∩ Γ«½∞¬« óαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿.
  787.                àß½¿  times ∩ó½∩ÑΓß∩ NULL-π¬áºáΓѽѼ, óαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿ πß-
  788.          Γá¡áó½¿óáÑΓß∩ »« ΓѬπΘѼπ óαѼѡ¿. ê¡áτÑ  times ñ«½ª¡«  π¬áºδóáΓ∞
  789.          ¡á  ßΓαπ¬Γπαπ  Γ¿»á utimbuf, «»αÑñѽѡ¡πε ó <sys\utime.h>. é φΓ«⌐
  790.          ßΓαπ¬ΓπαÑ óαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿ πßΓá¡áó½¿óáÑΓß∩ ¿º »«½∩ modtime.
  791.             
  792.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  793.             
  794.                öπ¡¬µ¿∩ utime ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ óαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿
  795.          í佫 ¿º¼Ñ¡Ñ¡«. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í  «Φ¿í-
  796.          ¬Ñ  ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  797.             
  798.             çìÇùàìêà                     àâÄ æî¢æï
  799.             
  800.             EACCES           Path-¿¼∩  Σá⌐½á «»αÑñѽ∩ÑΓ ñ¿αÑ¬Γ«α¿⌐
  801.                              ¿½¿ Σá⌐½, »αÑñ¡áº¡áτÑ¡¡δ⌐ Γ«½∞¬«  ñ½∩
  802.                              τΓÑ¡¿∩.
  803.                              
  804.             EMFILE           æπΘÑßΓóπÑΓ   ¼¡«ú«   «Γ¬αδΓδσ  Σá⌐½«ó
  805.                              (Σá⌐½  ñ«½ªÑ¡   íδΓ∞   «Γ¬αδΓδ¼   ñ½∩
  806.                              ¿º¼Ñ¡Ñ¡¿∩ óαѼѡ¿ Ñú« ¼«ñ¿Σ¿¬áµ¿¿).
  807.                              
  808.             ENOENT           öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  809.             
  810.                æ¼.  ΓᬪѠasctime, ctime, fstat, ftime, gmtime, localtime,
  811.          stat, time.
  812.             
  813.       
  814.                Åα¿¼Ñα.
  815.             
  816.             #include <sys\types.h>
  817.             #include <sys\utime.h>
  818.             #include <stdio.h>
  819.             #include <stdlib.h>
  820.             
  821.                /* éαѼ∩ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐½á πßΓá¡áó½¿óáÑΓß∩ »« ΓѬπΘѼπ óαÑ-
  822.          ¼Ñ¡¿ */
  823.             
  824.             if (utime("/tmp/data", NULL) == -1)
  825.                      perror ("utime failed").
  826.             
  827.       
  828.  
  829.                                       - 252 -
  830.          
  831.          
  832.             
  833.                VA_ARG - VA_START
  834.             
  835.             #include <varargs.h>           ΓαÑíπÑΓß∩          ñ½∩
  836.                                            ß«ó¼ÑßΓ¿¼«ßΓ¿ ß UNIX V.
  837.             
  838.             #include<stdarg.h>             ΓαÑíπÑΓß∩          ñ½∩
  839.                                            ß«ó¼ÑßΓ¿¼«ßΓ¿       ß«
  840.                                            ßΓá¡ñáαΓ«¼   ANSI   C.
  841.             
  842.             void  va_start(arg-ptr);       ¼á¬α«   ñ½∩   πßΓá¡«ó¬¿
  843.                                            arg-ptr    ¬     ¡áτá½π
  844.                                            ß»¿ß¬á   ¡Ñ«í∩ºáΓѽ∞¡δσ
  845.                                            áαúπ¼Ñ¡Γ«ó      (Γ«½∞¬«
  846.                                            óÑαß¿∩ <varargs.h>).
  847.             
  848.             void va_start(arg-ptr, prev-param);
  849.                                            ¼á¬α«   ñ½∩   πßΓá¡«ó¬¿
  850.                                            arg-ptr ¬ ¡áτá½π ß»¿ß¬á
  851.                                            ¡Ñ«í∩ºáΓѽ∞¡δσ    áαúπ-
  852.                                            ¼Ñ¡Γ«ó  (Γ«½∞¬«  óÑαß¿∩
  853.                                            <stdarg.h>).
  854.             
  855.             type va_start(arg-ptr, type);  ¼á¬α«  ñ½∩  ó«ºóαáΘÑ¡¿∩
  856.                                            ΓѬπΘÑú« áαúπ¼Ñ¡Γá
  857.             
  858.             void va_arg(arg-ptr);          ¼á¬α« ñ½∩ »ÑαÑπßΓá¡«ó¬¿
  859.                                            arg-ptr
  860.             
  861.             va_list arg-ptr;               π¬áºáΓѽ∞   ¡á   ß»¿ß«¬
  862.                                            áαúπ¼Ñ¡Γ«ó;
  863.             type                           Γ¿»       ó«ºóαáΘáѼ«ú«
  864.                                            áαúπ¼Ñ¡Γá;
  865.             prev-param                     »áαá¼ÑΓα, »αÑñΦÑñßΓóπε-
  866.                                            Θ¿⌐             »Ñαó«¼π
  867.                                            ¡Ñ«í∩ºáΓѽ∞¡«¼π   áαúπ-
  868.                                            ¼Ñ¡Γπ  (Γ«½∞¬«   óÑαß¿∩
  869.                                            <stdarg.h>).
  870.             
  871.             va_alist                       ¿¼∩ »áαá¼ÑΓαá ñ½∩ óδºδ-
  872.                                            óáѼ«⌐  Σπ¡¬µ¿¿ (Γ«½∞¬«
  873.                                            óÑαß¿∩ <varargs.h>).
  874.             
  875.             va_dcl                         «íΩ∩ó½Ñ¡¿Ñ     va_alist
  876.                                            (Γ«½∞¬«          óÑαß¿∩
  877.                                            <varargs.h>).
  878.             
  879.                Ä»¿ßá¡¿Ñ.
  880.             
  881.                îá¬α« va_start, va_arg, va_end «íÑß»Ñτ¿óáεΓ ß»«ß«í  ñ«ßΓπ»á
  882.          ¬  áαúπ¼Ñ¡Γá¼  Σπ¡¬µ¿¿, ¬«úñá «¡á »α¿¡¿¼áÑΓ »ÑαѼѡ¡«Ñ ¬«½¿τÑßΓó«
  883.          áαúπ¼Ñ¡Γ«ó.
  884.                ä«ßΓπ»¡δ  2 óÑαß¿¿ ¼á¬α«: ¼á¬α«, «íΩ∩ó½Ñ¡¡δÑ ó <varargs.h>,
  885.          ¬«Γ«αδÑ ß«ó¼ÑßΓ¿¼δ ß «»αÑñѽѡ¿Ñ¼ ß¿ßΓѼδ UNIX 5, ¿ ¼á¬α«, «íΩ∩ó-
  886.          ½Ñ¡¡δÑ ó <stdarg.h>, ¬«Γ«αδÑ »α¿óÑñÑ¡δ ó ß««ΓóÑΓßΓó¿¿ ß« ßΓá¡ñáα-
  887.  
  888.                                       - 253 -
  889.          
  890.          
  891.          Γ«¼ ANSI C.
  892.                ÄíÑ óÑαß¿¿ ¼á¬α« »αÑñ»«½áúáεΓ, τΓ« Σπ¡¬µ¿∩ »α¿¡¿¼áÑΓ Σ¿¬ß¿-
  893.          α«óá¡¡«Ñ τ¿ß½« ΓαÑíπѼδσ áαúπ¼Ñ¡Γ«ó, ß½ÑñπεΘÑÑ ºá »ÑαѼѡ¡δ¼ τ¿ß-
  894.          ½«¼ ¡Ñ«í∩ºáΓѽ∞¡δσ áαúπ¼Ñ¡Γ«ó. ÆαÑíπѼδÑ áαúπ¼Ñ¡Γδ «íΩ∩ó½Ñ¡δ  ¬á¬
  895.          ¡Ñ«í∩ºáΓѽ∞¡δÑ  »áαá¼ÑΓαδ ñ½∩ Σπ¡¬µ¿⌐ ¿ ¼«úπΓ íδΓ∞ ñ«ßΓπ»¡δ τÑαѺ
  896.          ¿¼Ñ¡á »áαá¼ÑΓα«ó. ìÑ«í∩ºáΓѽ∞¡δÑ áαúπ¼Ñ¡Γδ ñ«ßΓπ»¡δ  τÑαѺ  ¼á¬α«
  897.          <varargs.h>  ¿½¿  <stdarg.h>,  ¬«Γ«αδÑ πßΓá¡áó½¿óáεΓ π¬áºáΓѽ∞ ¡á
  898.          »Ñαóδ⌐ ¡Ñ«í∩ºáΓѽ∞¡δ⌐ áαúπ¼Ñ¡Γ ó  ß»¿ß¬Ñ  áαúπ¼Ñ¡Γ«ó;  ó«ºóαáΘáεΓ
  899.          áαúπ¼Ñ¡Γδ ¿º ß»¿ß¬á ¿ »ÑαÑπßΓá¡áó½¿óáεΓ π¬áºáΓѽ∞, ¬«úñá «íαáí«Γ-
  900.          ¬á áαúπ¼Ñ¡Γ«ó ºáóÑαΦÑ¡á.
  901.                îá¬α«  ß¿ßΓѼδ UNIX 5, «íΩ∩ó½Ñ¡¡δÑ ó <varargs.h>, ¿ß»«½∞ºπ-
  902.          εΓß∩ ¬á¬ »«¬áºá¡« ¡¿ªÑ.
  903.             
  904.                1. ïεíδÑ ΓαÑíπѼδÑ »áαá¼ÑΓαδ ñ½∩ Σπ¡¬µ¿¿ ¼«úπΓ íδΓ∞  «íΩ∩ó-
  905.          ½Ñ¡δ «íδτ¡δ¼ ß»«ß«í«¼ ¬á¬ »áαá¼ÑΓαδ.
  906.                2.  Å«ß½Ññ¡¿⌐ »áαá¼ÑΓα ñ½∩ Σπ¡¬µ¿¿ »αÑñßΓáó½∩ÑΓ ß»¿ß«¬ ¡Ñ«-
  907.          í∩ºáΓѽ∞¡δσ áαúπ¼Ñ¡Γ«ó. ¥Γ«Γ »áαá¼ÑΓα ñ«½ªÑ¡ íδΓ∞ ¡áºóá¡ va_alist
  908.          (¡Ñ  »ÑαÑ»πΓá⌐ΓÑ  Ñú«  ß  va_list,  ¬«Γ«αδ⌐  «íΩ∩ó½Ñ¡   ¬á¬   Γ¿»
  909.          va_alist).
  910.                3. îá¬α« va_dcl »«∩ó½∩ÑΓß∩ »«ß½Ñ «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿ ¿ »ÑαÑñ
  911.          «Γ¬αδΓ«⌐  ½Ñó«⌐ ß¬«í¬«⌐ Σπ¡¬µ¿¿. ¥Γá ¼á¬α« «íΩ∩ó½∩ÑΓß∩ ¬á¬ »«½¡«Ñ
  912.          «»¿ßá¡¿Ñ »áαá¼ÑΓαá va_alist, «¬á¡τ¿óáεΘÑú«ß∩  Γ«τ¬«⌐  ß  ºá»∩Γ«⌐,
  913.          «ñ¡á¬«, ºá va_dcl ¡Ñ ¼«ªÑΓ ¿ñΓ¿ Γ«τ¬á ß ºá»∩Γ«⌐.
  914.                4.  é¡πΓα¿  Σπ¡¬µ¿¿  ¼á¬α« va_start πßΓá¡áó½¿óáÑΓ arg-ptr ¬
  915.          ¡áτá½π ß»¿ß¬á ¡Ñ«í∩ºáΓѽ∞¡δσ »áαá¼ÑΓα«ó, ¬«Γ«αδ⌐ »ÑαÑñáÑΓß∩ Σπ¡¬-
  916.          µ¿¿. îá¬α« va_start ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ »ÑαÑñ va_arg, ¿ß»«½∞ºπ-
  917.          Ñ¼«⌐ ó »Ñαóδ⌐ αáº. Çαúπ¼Ñ¡Γ arg-ptr ñ«½ªÑ¡ ¿¼ÑΓ∞ Γ¿» va_list.
  918.                5. îá¬α« va_arg óδ»«½¡∩ÑΓ ß½ÑñπεΘÑÑ:
  919.                * ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ºáñá¡¡«ú« Γ¿»á type ¿º Γ«ú«  αáß»«½«-
  920.          ªÑ¡¿∩, ¬«Γ«α«Ñ «»αÑñѽ∩ÑΓß∩ »« áαúπ¼Ñ¡Γπ arg-ptr;
  921.                *  πóѽ¿τ¿óáÑΓ arg-ptr, τΓ«íδ π¬áºáΓ∞ ¡á ß½ÑñπεΘ¿⌐ áαúπ¼Ñ¡Γ
  922.          ó ß»¿ß¬Ñ, ¿ß»«½∞ºπ∩ αẼÑα type ñ½∩ «»αÑñѽѡ¿∩ ¡áτá½á αáß»«½«ªÑ-
  923.          ¡¿∩ ß½ÑñπεΘÑú« áαúπ¼Ñ¡Γá.
  924.                é¡πΓα¿ Σπ¡¬µ¿⌐ ¼á¬α« va_arg ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ½εí«Ñ  ¬«-
  925.          ½¿τÑßΓó« αáº, τΓ«íδ ó«ºóαáΓ¿Γ∞ ΓαÑíπѼδÑ áαúπ¼Ñ¡Γδ ¿º ß»¿ß¬á.
  926.                6.  Å«ß½Ñ ó«ºóαáΘÑ¡¿∩ óßÑσ áαúπ¼Ñ¡Γ«ó  va_end πßΓá¡áó½¿óáÑΓ
  927.          π¬áºáΓѽ∞ ó NULL.
  928.             
  929.                îá¬α«, »αÑñ½áúáѼδÑ  ßΓá¡ñáαΓ«¼  ANSI  C  ¿  «íΩ∩ó½Ñ¡¡δÑ  ó
  930.          <stdarg.h>,  ¡Ñº¡áτ¿Γѽ∞¡« «Γ½¿τáεΓß∩ «Γ ¼á¬α«, ¬«Γ«αδÑ «íΩ∩ó½Ñ¡δ
  931.          ó <varargs.h>.
  932.                1. éßÑ ΓαÑíπѼδÑ áαúπ¼Ñ¡Γδ ñ½∩ Σπ¡¬µ¿¿ «íΩ∩ó½∩εΓß∩ ¬á¬  »á-
  933.          αá¼ÑΓαδ. îá¬α« va_dcl ¡Ñ ¿ß»«½∞ºπÑΓß∩ ó¼ÑßΓÑ ß ¼á¬α« <stdarg.h>.
  934.                2.  îá¬α« va_start πßΓá¡áó½¿óáÑΓ arg-ptr ¡á »Ñαóδ⌐ ¡Ñ«í∩ºá-
  935.          Γѽ∞¡δ⌐ áαúπ¼Ñ¡Γ ¿º ß»¿ß¬á áαúπ¼Ñ¡Γ«ó, ¬«Γ«αδ⌐  »ÑαÑñáÑΓß∩  Σπ¡¬-
  936.          µ¿¿.   Çαúπ¼Ñ¡Γ   arg-prt  ñ«½ªÑ¡  ¿¼ÑΓ∞  Γ¿»  va_list.  Çαúπ¼Ñ¡Γ
  937.          prev-param ∩ó½∩ÑΓß∩ ¿¼Ñ¡Ñ¼ ΓαÑíπѼ«ú« »áαá¼ÑΓαá,  ¡Ñ»«ßαÑñßΓóÑ¡¡«
  938.          »αÑñΦÑñßΓóπεΘÑú«  »Ñαó«¼π ¡Ñ«í∩ºáΓѽ∞¡«¼π »áαá¼ÑΓαπ ¿º ß»¿ß¬á áα-
  939.          úπ¼Ñ¡Γ«ó. îá¬α« va_start ñ«½ª¡á íδΓ∞ ¿ß»«½∞º«óá¡á  »ÑαÑñ  va_arg,
  940.          ¿ß»«½∞ºπѼ«⌐ ó »Ñαóδ⌐ αáº.
  941.                3. îá¬α« va_arg óδ»«½¡∩ÑΓ ß½ÑñπεΘÑÑ:
  942.                * ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ Γ¿»á type ¿º Γ«ú« αáß»«½«ªÑ¡¿∩, ¬«Γ«-
  943.          α«Ñ «»αÑñѽ∩ÑΓß∩ »« áαúπ¼Ñ¡Γπ arg-ptr.
  944.                *  τΓ«íδ π¬áºáΓ∞ ¡á ß½ÑñπεΘ¿⌐ áαúπ¼Ñ¡Γ ó ß»¿ß¬Ñ, «¡á πóѽ¿-
  945.          τ¿óáÑΓ arg-ptr ¿ ¿ß»«½∞ºπÑΓ αẼÑα type  ñ½∩  «»αÑñѽѡ¿∩  ¡áτá½á
  946.  
  947.                                       - 254 -
  948.          
  949.          
  950.          αáß»«½«ªÑ¡¿∩ ß½ÑñπεΘÑú« áαúπ¼Ñ¡Γá.
  951.                é¡πΓα¿  Σπ¡¬µ¿⌐ ¼á¬α« va_arg ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ½εí«Ñ ¬«-
  952.          ½¿τÑßΓó« αáº, τΓ«íδ ó«ºóαáΓ¿Γ∞ ΓαÑíπѼδÑ áαúπ¼Ñ¡Γδ ¿º ß»¿ß¬á.
  953.                4. Å«ß½Ñ ó«ºóαáΘÑ¡¿∩ óßÑσ áαúπ¼Ñ¡Γ«ó, va_end »ÑαÑπßΓá¡áó½¿-
  954.          óáÑΓ π¬áºáΓѽ∞ ó NULL.
  955.             
  956.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  957.       
  958.                îá¬α« va_arg ó«ºóαáΘáÑΓ ΓѬπΘ¿⌐ áαúπ¼Ñ¡Γ; va_start ¿ va_end
  959.          º¡áτÑ¡¿⌐ ¡Ñ ó«ºóαáΘáεΓ.
  960.                æ¼. ΓᬪѠvfprintf, vprintf, vsprintf.
  961.             
  962.                Åα¿¼Ñα:
  963.             
  964.                ì¿ªÑ »α¿ó«ñ¿Γß∩ ½¿ßΓ¿¡ú »α«úαá¼¼δ, ¿ß»«½∞ºπεΘÑ⌐ <varargs.h>
  965.          ñ½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß UNIX V.
  966.             
  967.             #include <stdio.h>
  968.             #include <varargs.h>
  969.             
  970.             main()
  971.             {
  972.                    int n;
  973.                    .
  974.                    .
  975.                    .
  976.                /* óδºδóáÑΓß∩ Σπ¡¬µ¿∩ 4-σ  áαúπ¼Ñ¡Γ«ó;  »«ß½Ññ¡¿⌐  áαúπ¼Ñ¡Γ
  977.          ºáñáÑΓß∩ αáó¡δ¼ -1, τΓ«íδ «Γ¼ÑΓ¿Γ∞ ¬«¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó */
  978.             
  979.                    n = average(2, 3, 4, -1);
  980.             printf("Average is: %d\n", n);
  981.                    .
  982.                    .
  983.                    .
  984.                /*  óδºδóáÑΓß∩  Σπ¡¬µ¿∩ 5-Γ¿ áαúπ¼Ñ¡Γ«ó; »«ß½Ññ¡¿⌐ áαúπ¼Ñ¡Γ
  985.          ºáñáÑΓß∩ αáó¡δ¼ -1, τΓ«íδ «Γ¼ÑΓ¿Γ∞ ¬«¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó */
  986.             
  987.                    n = average(5, 7, 9, 11, -1);
  988.             printf("Average is: %d\n", n);
  989.             }
  990.             
  991.             average(va_alist)
  992.             va_dcl
  993.               {
  994.                  int i = 0, count = 0, sum = 0;
  995.                  va_list arg_marker;
  996.             
  997.                  va_start(arg_marker);
  998.             
  999.                /* ó«ºóαáΘÑ¡¿Ñ áαúπ¼Ñ¡Γ«ó ¿ »α¿íáó½Ñ¡¿Ñ ¬ sum, »«¬á ¡Ñ óßΓ-
  1000.          αÑΓ¿Γß∩ »«ß½Ññ¡¿⌐ áαúπ¼Ñ¡Γ -1. */
  1001.       
  1002.              for (; (i = va_arg(arg_marker, int)) >= 0;
  1003.                          sum+=i, count++)
  1004.                               ;
  1005.  
  1006.                                       - 255 -
  1007.          
  1008.          
  1009.                  return (count ? (sum/count) : count);
  1010.               }.
  1011.             
  1012.             
  1013.                Ç¡á½«ú¿τ¡á∩  »α«úαá¼¼á, »ÑαѺỿßá¡¡á∩ ñ½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß«
  1014.          ßΓá¡ñáαΓ«¼ ANSI C.
  1015.             
  1016.             #include <stdio.h>
  1017.             #include <stdarg.h>
  1018.             
  1019.             main()
  1020.             {
  1021.                    int n;
  1022.                    .
  1023.                    .
  1024.                    .
  1025.                /* óδºδóáÑΓß∩ Σπ¡¬µ¿∩ 4-σ  áαúπ¼Ñ¡Γ«ó;  »«ß½Ññ¡¿⌐  áαúπ¼Ñ¡Γ
  1026.          ºáñáÑΓß∩ αáó¡δ¼ -1, τΓ«íδ «Γ¼ÑΓ¿Γ∞ ¬«¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó */
  1027.             
  1028.                    n = average(2, 3, 4, -1);
  1029.             printf("Average is: %d\n", n);
  1030.                    .
  1031.                    .
  1032.                    .
  1033.                /*  óδºδóáÑΓß∩  Σπ¡¬µ¿∩ 5-Γ¿ áαúπ¼Ñ¡Γ«ó; »«ß½Ññ¡¿⌐ áαúπ¼Ñ¡Γ
  1034.          ºáñáÑΓß∩ αáó¡δ¼ -1, τΓ«íδ «Γ¼ÑΓ¿Γ∞ ¬«¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó */
  1035.             
  1036.                    n = average(5, 7, 9, 11, -1);
  1037.             printf("Average is: %d\n", n);
  1038.             }
  1039.             
  1040.             average(first)
  1041.             int first;
  1042.               {
  1043.                  int i = 0, count = 0, sum;
  1044.                  va_list arg_marker;
  1045.             
  1046.                  va_start(arg_marker, first);
  1047.             
  1048.                /* »Ñαóδ⌐  áαúπ¼Ñ¡Γ  »α¿íáó½∩ÑΓß∩  ¬  sum  ¿  πóѽ¿τ¿óáÑΓß∩
  1049.          count; Ñß½¿ »Ñαóδ⌐ áαúπ¼Ñ¡Γ αáóÑ¡ -1, »α«¿ßσ«ñ¿Γ ó«ºóαáΓ */
  1050.             
  1051.                  if (first != -1)
  1052.                       sum = first;
  1053.                  else
  1054.                       return (0);
  1055.                  count++;
  1056.                /*  ó«ºóαáΘÑ¡¿Ñ  ñ«»«½¡¿Γѽ∞¡δσ  áαúπ¼Ñ¡Γ«ó ¿ »α¿íáó½Ñ¡¿Ñ ¬
  1057.          sum, »«¬á ¡Ñ óßΓαÑΓ¿Γß∩ »«ß½Ññ¡¿⌐ áαúπ¼Ñ¡Γ -1. */
  1058.             
  1059.                  for (; (i = va_arg(arg_marker, int)) >= 0;
  1060.                          sum+=i, count++)
  1061.                               ;
  1062.                  return (sum/count);
  1063.               }.
  1064.  
  1065.                                       - 256 -
  1066.          
  1067.          
  1068.  
  1069.       
  1070.       
  1071.                VFPRINTF - VSPRINTF
  1072.                    
  1073.             #include <stdio.h>
  1074.             #include <varargs.h>    ΓαÑíπÑΓß∩  ñ½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß
  1075.                                     UNIX V.
  1076.             
  1077.             #include <stdarg.h>     ΓαÑíπÑΓß∩ ñ½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß«
  1078.                                     ßΓá¡ñáαΓ«¼ ANSI C.
  1079.             
  1080.             int vfprintf(stream, format-string, arg-ptr);
  1081.             int vprintf(format-string, arg-ptr);
  1082.             int vsprintf(buffer, format-string, arg-ptr);
  1083.             
  1084.             FILE *stream;            π¬áºáΓѽ∞ ¡á  ßΓαπ¬Γπαπ  Γ¿»á
  1085.                                      FILE.
  1086.             char *buffer;            »á¼∩Γ∞  ñ½∩  σαá¡Ñ¡¿∩ αѺπ½∞-
  1087.                                      ΓáΓá
  1088.             char *format-string;     ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
  1089.             va_list arg-ptr;         π¬áºáΓѽ∞   ¡á  ß»¿ß«¬  áαúπ-
  1090.                                      ¼Ñ¡Γ«ó.
  1091.                Ä»¿ßá¡¿Ñ.
  1092.             
  1093.                öπ¡¬µ¿¿ vfprintf, vprintf, vsprintf Σ«α¼áΓ¿απεΓ  ¿  óδó«ñ∩Γ
  1094.          ñá¡¡δÑ ß««ΓóÑΓßΓóÑ¡¡« ó »«Γ«¬ stream, »«Γ«¬ ßΓá¡ñáαΓ¡«ú« óδó«ñá ¿
  1095.          íπΣÑα  buffer.  ¥Γ¿  Σπ¡¬µ¿¿  »«σ«ª¿  ¡á  ßó«¿  ñó«⌐¡¿¬¿ fprintf,
  1096.          printf, sprintf, ¡« ¿ß»«½∞ºπεΓ  π¬áºáΓѽ∞  ¡á  ß»¿ß«¬  áαúπ¼Ñ¡Γ«ó
  1097.          ó¼ÑßΓ« ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
  1098.                Format-string  ¿¼ÑÑΓ Γπ ªÑ ßá¼πε Σ«α¼π ¿ Σπ¡¬µ¿ε, τΓ« ¿ áα-
  1099.          úπ¼Ñ¡Γ ßΓ᫬¿ Σ«α¼áΓá ñ½∩ Σπ¡¬µ¿¿ printf; (ß¼.  «»¿ßá¡¿Ñ  Σπ¡¬µ¿¿
  1100.          printf).
  1101.                Åáαá¼ÑΓα   arg-ptr   ¿¼ÑÑΓ   Γ¿»  va_list,  «»αÑñѽ∩Ѽδ⌐  ó
  1102.          <vararg.h> ¿ <stdarg.h>. ¥Γ«Γ »áαá¼ÑΓα π¬áºδóáÑΓ ¡á ß»¿ß«¬  áαúπ-
  1103.          ¼Ñ¡Γ«ó, ¬«Γ«αδÑ »αÑ«íαẫóδóáεΓß∩ ¿ óδó«ñ∩Γß∩ ß«ú½áß¡« ß««ΓóÑΓßΓ-
  1104.          óπεΘ¿¼ ß»Ñµ¿Σ¿¬áµ¿∩¼ Σ«α¼áΓá ó format-string.
  1105.             
  1106.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1107.             
  1108.                é«ºóαáΘáÑ¼δ¼  º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ ¬«½¿τÑßΓó« óδóÑñÑ¡¡δσ ß¿¼-
  1109.          ó«½«ó.
  1110.                æ¼.  ΓᬪѠ fprintf,  printf,  sprintf,   va_arg,   va_end,
  1111.          va_start.
  1112.             
  1113.                Åα¿¼Ñα:
  1114.             
  1115.                é ¬áτÑßΓóÑ »α¿¼Ñαá »α¿ó«ñ¿Γß∩ ½¿ßΓ¿¡ú »α«úαá¼¼δ, ¿ß»«½∞ºπε-
  1116.          ΘÑ⌐ <varargs.h> ñ½∩ ß«ó¼ÑßΓ¿¼«ßΓ¿ ß UNIX V.
  1117.             
  1118.             #include <stdio.h>
  1119.             #include <varargs.h>
  1120.             
  1121.             main ()
  1122.             {
  1123.  
  1124.                                       - 257 -
  1125.          
  1126.          
  1127.             int line = 1;
  1128.       
  1129.             char *filename = "EXAMPLE";
  1130.             .
  1131.             .
  1132.             .
  1133.             error("Error: line %d, file %s\n", line, filename);
  1134.             .
  1135.             .
  1136.             .
  1137.             error("Syntax error\n");
  1138.             }
  1139.             
  1140.             error(va_alist);
  1141.             va_dcl;
  1142.             {
  1143.                char *fmt;
  1144.                va_list arg_ptr;
  1145.             
  1146.                  va_start(arg_ptr);
  1147.                /* arg_ptr ßÑ⌐τáß π¬áºδóáÑΓ ¡á ßΓ᫬π Σ«α¼áΓá */
  1148.                  fmt = va_arg(arg_ptr, char *);
  1149.                /* arg_ptr ßÑ⌐τáß π¬áºδóáÑΓ ¡á áαúπ¼Ñ¡Γ »«ß½Ñ ßΓ᫬¿ Σ«α¼á-
  1150.          Γá */
  1151.                  vprintf(fmt, arg_ptr);
  1152.                  va_end(arg_ptr);
  1153.             }
  1154.             
  1155.             ìá óδσ«ñÑ:
  1156.             
  1157.             Error: line 1, file EXAMPLE
  1158.             Syntax error.
  1159.             
  1160.                ì¿ªÑ  »α¿ó«ñ¿Γß∩  á¡á½«ú¿τ¡á∩ »α«úαá¼¼á, »ÑαѺỿßá¡¡á∩ ñ½∩
  1161.          ß«ó¼ÑßΓ¿¼«ßΓ¿ ß« ßΓá¡ñáαΓ«¼ ANSI C.
  1162.             
  1163.             #include <stdio.h>
  1164.             #include <stdarg.h>
  1165.             
  1166.             main ()
  1167.             {
  1168.             int line = 1;
  1169.             char *filename = "EXAMPLE";
  1170.             .
  1171.             .
  1172.             .
  1173.             error("Error: line %d, file %s\n", line, filename);
  1174.             .
  1175.             .
  1176.             .
  1177.             error("Syntax error\n");
  1178.             }
  1179.             
  1180.             error(fmt);
  1181.             char *fmt;
  1182.  
  1183.                                       - 258 -
  1184.          
  1185.          
  1186.             {
  1187.                va_list arg_ptr;
  1188.                va_start(arg_ptr, fmt);
  1189.       
  1190.       
  1191.                /* arg_ptr ßÑ⌐τáß π¬áºδóáÑΓ ¡á áαúπ¼Ñ¡Γ »«ß½Ñ ßΓ᫬¿ Σ«α¼á-
  1192.          Γá */
  1193.                  vprintf(fmt, arg_ptr);
  1194.                  va_end(arg_ptr);
  1195.             }
  1196.             
  1197.             ìá óδσ«ñÑ:
  1198.             
  1199.             Error: line 1, file EXAMPLE
  1200.             Syntax error.
  1201.             
  1202.       
  1203.       
  1204.             
  1205.                WRITE
  1206.             
  1207.             #include<io.h>       ΓαÑíπÑΓß∩ Γ«½∞¬«  ñ½∩  «íΩ∩ó½Ñ¡¿∩
  1208.                                  Σπ¡¬µ¿¿
  1209.             
  1210.             int write (handle, buffer, count);
  1211.             int handle;          handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
  1212.                                  Σá⌐½
  1213.             char *buffer;       ºá»¿ßδóáѼδÑ ñá¡¡δÑ
  1214.             unsigned int count; τ¿ß½« íá⌐Γ«ó
  1215.             
  1216.                Ä»¿ßá¡¿Ñ.
  1217.             
  1218.                öπ¡¬µ¿∩ write ºá»¿ßδóáÑΓ íá⌐Γδ count  ¿º  íπΣÑαá  buffer  ó
  1219.          Σá⌐½, ßó∩ºá¡¡δ⌐ ß handle. Ä»Ñαᵿ¿ write ¡áτ¿¡áεΓß∩ ß ΓѬπΘÑ⌐ »«-
  1220.          º¿µ¿¿  π¬áºáΓѽ∩  ¡á Σá⌐½ (π¬áºáΓѽ∞ áßß«µ¿¿α«óá¡ ß ºáñá¡¡δ¼ Σá⌐-
  1221.          ½«¼). àß½¿ Σá⌐½ «Γ¬αδΓ ñ½∩ ñ«íáó½Ñ¡¿∩, «»Ñαᵿ¿ óδ»«½¡∩εΓß∩ ó ¬«-
  1222.          ¡Ñµ Σá⌐½á. Å«ß½Ñ «ßπΘÑßΓó½Ñ¡¿∩ «»Ñαᵿ⌐ ºá»¿ß¿ π¬áºáΓѽ∞ ¡á  Σá⌐½
  1223.          (Ñß½¿ «¡ ÑßΓ∞) πóѽ¿τ¿óáÑΓß∩ ¡á ¬«½¿τÑßΓó« ñÑ⌐ßΓó¿Γѽ∞¡« ºá»¿ßá¡-
  1224.          ¡δσ íá⌐Γ«ó.
  1225.             
  1226.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1227.                             
  1228.                öπ¡¬µ¿∩  write  ó«ºóαáΘáÑΓ  τ¿ß½«  ñÑ⌐ßΓó¿Γѽ∞¡« ºá»¿ßá¡¡δσ
  1229.          íá⌐Γ«ó. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ñ«½ª¡« íδΓ∞ »«½«ª¿Γѽ∞¡δ¼, ¡« ¼Ñ¡∞-
  1230.          ΦÑ τ¿ß½á count (¡á»α¿¼Ñα, ¬«úñá αẼÑα ñ½∩  ºá»¿ß¿  count  íá⌐Γ«ó
  1231.          óδσ«ñ¿Γ  ºá »αÑñÑ½δ »α«ßΓαá¡ßΓóá ¡á ñ¿ß¬Ñ). é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ
  1232.          -1 π¬áºδóáÑΓ ¡á «Φ¿í¬π; errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ
  1233.          º¡áτÑ¡¿⌐:
  1234.             
  1235.             çìÇùàìêà            àâÄ æî¢æï
  1236.             
  1237.             EACCES           Σá⌐½ «Γ¬αδΓ ñ½∩ τΓÑ¡¿∩ ¿½¿ ºá¬αδΓ ñ½∩
  1238.                              ºá»¿ß¿
  1239.             
  1240.             EBADF            ¡ÑóÑα¡δ⌐ handle-α Σá⌐½á
  1241.  
  1242.                                       - 259 -
  1243.          
  1244.          
  1245.             
  1246.             ENOSPC           ¡á πßΓα«⌐ßΓóÑ ¡ÑΓ ßó«í«ñ¡«ú« ¼ÑßΓá
  1247.             
  1248.                àß½¿ ó Σá⌐½ ºá»¿ßá¡« í«½ÑÑ 32è  (¼á¬ß¿¼á½∞¡δ⌐   αẼÑα  ñ½∩
  1249.          Γ¿»á  int),  ó«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ  íπñÑΓ ¿¼ÑΓ∞ Γ¿» unsigned int
  1250.          (ß¼.¡¿ªÑß½ÑñπεΘ¿⌐ »α¿¼Ñα). Äñ¡á¬«, ¼á¬ß¿¼á½∞¡«Ñ τ¿ß½«  ºá»¿ßδóáÑ-
  1251.          ¼δσ íá⌐Γ«ó ó Σá⌐½ αáó¡« 65534; »«ß¬«½∞¬π τ¿ß½« 65535 ∩ó½∩ÑΓß∩ ¡Ñ-
  1252.          «Γ½¿τ¿¼δ¼  «Γ -1, Γ« ó«ºóαáΘáÑΓß∩ «Φ¿í¬á. àß½¿ ºáñá¡¡δ⌐ Σá⌐½ «Γ¬-
  1253.          αδΓ ó ΓѬßΓ«ó«¼ αѪ¿¼Ñ, ¬áªñδ⌐ ß¿¼ó«½ "ÅÑαÑó«ñ ßΓ᫬¿" ¡á  óδσ«ñÑ
  1254.          ºá¼Ñ¡∩ÑΓß∩  »áα«⌐ "髺óαáΓ ¬áαÑΓ¬¿-ÅÑαÑó«ñ ßΓ᫬¿". ¥Γá ºá¼Ñ¡á ¡Ñ
  1255.          ó½¿∩ÑΓ ¡á ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1256.                æ¼.ΓᬪѠfwrite, open, read.
  1257.             
  1258.                çá¼Ñτá¡¿Ñ. Åα¿ ºá»¿ß¿ ó Σá⌐½, «Γ¬αδΓδ⌐ ó ΓѬßΓ«ó«¼  αѪ¿¼Ñ,
  1259.          ß¿¼ó«½  Γαá¬ΓπÑΓß∩ ¬á¬ ½«ú¿τÑ߬¿⌐ ¬«¡Ñµ Σá⌐½á. Åα¿ ºá»¿ß¿ ¡á πßΓ-
  1260.          α«⌐ßΓó« ß¿¼ó«½ ó íπΣÑαÑ ó½¿∩ÑΓ ¡á «¬«¡τá¡¿Ñ #include<io.h>.
  1261.       
  1262.             #include<stdio.h>
  1263.             #include<fcntl.h>
  1264.             
  1265.             char buffer [60000];
  1266.       
  1267.             main ()
  1268.            
  1269.                {
  1270.                int fh;
  1271.                unsigned int nbytes = 60000, byteswritten;
  1272.             
  1273.                if ((fh=open("c:/data/conf.dat",O_WRONLY))==-1) {
  1274.                    perror("open failed on output file");
  1275.                    exit (1);
  1276.                    }
  1277.                if ((byteswritten=write(fh,buffer,nbytes))==-1)
  1278.                    perror ("");
  1279.                else
  1280.                  printf("Wrote %u bytes to file\n",byteswritten);
  1281.                .
  1282.                .
  1283.                .
  1284.                }
  1285. .
  1286.                                       - 260 -
  1287.          
  1288.          
  1289.                
  1290.                
  1291.                 
  1292.                                 
  1293.                                                   Å É ê ï Ä å à ì ê à
  1294.                                                   
  1295.                
  1296.                                æ««íΘÑ¡¿∩ «í «Φ¿í¬áσ
  1297.             
  1298.             
  1299.                1. éóÑñÑ¡¿Ñ
  1300.                 
  1301.                 
  1302.                é φΓ«¼ »α¿½«ªÑ¡¿¿ ß«ñÑনΓß∩ ß»¿ß«¬ ¿ «»¿ßá¡¿Ñ º¡áτÑ¡¿⌐,  ó
  1303.          ¬«Γ«αδÑ πßΓá¡áó½¿óáÑΓß∩ »ÑαѼѡ¡á∩ errno, Ñß½¿ »α¿ ó맮óÑ í¿í½¿«-
  1304.          ΓÑτ¡«⌐  »α«µÑñπαδ ó«º¡¿¬áÑΓ «Φ¿í¬á. çá¼ÑΓ¿¼, τΓ« ¡Ñ¬«Γ«αδÑ »α«µÑ-
  1305.          ñπαδ ßἿ πßΓá¡áó½¿óáεΓ »ÑαѼѡ¡πε errno.  æ««íΘÑ¡¿∩  «í  «Φ¿í¬áσ
  1306.          ßó∩ºá¡δ ß ¬áªñδ¼ º¡áτÑ¡¿Ñ¼ errno. ¥Γ¿ ß««íΘÑ¡¿∩ ¿ ß««íΘÑ¡¿∩, »«ß-
  1307.          Γáó½∩ѼδÑ »«½∞º«óáΓѽ∩¼¿, »ÑτáΓáεΓß∩ »«ßαÑñßΓó«¼ »α¿¼Ñ¡Ñ¡¿∩ Σπ¡¬-
  1308.          µ¿¿ perror.
  1309.                ç¡áτÑ¡¿Ñ errno «ΓαáªáÑΓ ß««ΓóÑΓßΓóπεΘÑÑ º¡áτÑ¡¿Ñ «Φ¿í¬¿ ñ½∩
  1310.          Γ«ú«  ó맮óá, ó ¬«Γ«α«¼ πßΓá¡«ó½Ñ¡« errno. ç¡áτÑ¡¿Ñ errno áóΓ«¼á-
  1311.          Γ¿τÑ߬¿ ¡Ñ πí¿αáÑΓß∩. Å«φΓ«¼π, τΓ«íδ »«½πτ¿Γ∞ »αáó¿½∞¡δÑ  αѺπ½∞-
  1312.          ΓáΓδ αáí«Γδ »α«úαá¼¼δ, ¡πª¡« ßαáºπ ªÑ »«ß½Ñ ó맮óá φΓ«⌐ »α«úαá¼¼δ
  1313.          »α«óÑα∩Γ∞  ÑÑ  ¡á  «Φ¿í¬¿ ¿ »ÑτáΓáΓ∞ ß««ΓóÑΓßΓóπεΘ¿Ñ ß««íΘÑ¡¿∩ «í
  1314.          «Φ¿í¬áσ .
  1315.                Include-Σá⌐½ <erno.h> ß«ñÑαª¿Γ «íΩ∩ó½Ñ¡¿∩  º¡áτÑ¡¿⌐  errno.
  1316.          Äñ¡á¬«  ó  MS  DOS  ¿ß»«½∞ºπεΓß∩  ¡Ñ  óßÑ  «íΩ∩ó½Ñ¡¿∩, ºáñá¡¡δÑ ó
  1317.          <errno.h>. Include-Σá⌐½ ß«ñÑαª¿Γ ΓᬪѠ»«½¡«Ñ ¼¡«ªÑßΓó« º¡áτÑ¡¿⌐,
  1318.          ¬«Γ«α«Ñ «íÑß»Ñτ¿óáÑΓ  »«ññÑ᪬π  ß«ó¼ÑßΓ¿¼«ßΓ¿  ß  XENIX  ¿  UNIX
  1319.          include-Σá⌐½á¼¿, ¿¼ÑεΘ¿¼¿ á¡á½«ú¿τ¡«Ñ ¿¼∩. é φΓ«¼ »α¿½«ªÑ¡¿¿ »α¿-
  1320.          ó«ñ¿Γß∩ ß»¿ß«¬ º¡áτÑ¡¿⌐ errno, ¿ß»«½∞ºπѼδσ ó MS DOS. Å«½¡δ⌐ ß»¿-
  1321.          ß«¬  º¡áτÑ¡¿⌐ errno »α¿óÑñÑ¡ ó include-Σá⌐½Ñ <errno.h>. çñÑß∞ ß«-
  1322.          ñÑনΓß∩ ΓᬪѠ߻¿ß«¬ «Φ¿í«¬, ó«º¡¿¬áεΘ¿σ »α¿ óδ»«½¡Ñ¡¿¿  ¼áΓѼá-
  1323.          Γ¿τÑ߬¿σ  »α«µÑñπα.  ¥Γ¿ «Φ¿í¬¿ ß««ΓóÑΓßΓóπεΓ Γᬿ¼ Γ¿»á¼ «Φ¿í«¬,
  1324.          ¬«Γ«αδÑ «íΩ∩ó½Ñ¡δ ó <math.h> ¿ »α¿  ó«º¡¿¬¡«óÑ¡¿¿  ¼áΓѼáΓ¿τÑ߬«⌐
  1325.          «Φ¿í¬¿ ó«ºóαáΘáεΓß∩ Σπ¡¬µ¿Ñ⌐ matherr.
  1326.       
  1327.       
  1328.                2. ç¡áτÑ¡¿∩ errno
  1329.             
  1330.                é Γáí½¿µÑ Ç.1 ºáñá¡δ º¡áτÑ¡¿∩ errno, ¿ß»«½∞ºπѼδÑ ó MS DOS,
  1331.          ß¿ßΓѼ¡δÑ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ, ß««ΓóÑΓßΓóπεΘ¿Ñ ¬áªñ«¼π º¡áτÑ¡¿ε,
  1332.          á ΓᬪѠ¬αáΓ¬«Ñ «»¿ßá¡¿Ñ ß½πτáÑó, »«ó½Ñ¬Φ¿σ «Φ¿í¬π.
  1333.             
  1334.                                                           Æáí½¿µá Ç.1
  1335.                
  1336.                            ç¡áτÑ¡¿∩ errno ¿ ¿σ «»¿ßá¡¿∩
  1337.             
  1338.          ç¡áτÑ¡¿Ñ       æ««íΘÑ¡¿Ñ                Ä»¿ßá¡¿Ñ
  1339.                        
  1340.          E2BIG        æ»¿ß«¬ áαúπ¼Ñ¡Γ«ó   æ»¿ß«¬ áαúπ¼Ñ¡Γ«ó »αÑóδΦáÑΓ
  1341.                       «τÑ¡∞ ñ½¿¡¡δ⌐.      128è   ¿½¿    »α«ßΓαá¡ßΓó«,
  1342.                                           ΓαÑíπѼ«Ñ   ñ½∩  ¿¡Σ«α¼áµ¿¿
  1343.                                           «¬απªÑ¡¿∩, »αÑóδΦáÑΓ 32è.
  1344.  
  1345.                                       - 261 -
  1346.          
  1347.          
  1348.            
  1349.          EACCES       ä«ßΓπ»              ä«ßΓπ» ºá»αÑΘÑ¡: αáºαÑΦÑ¡¿Ñ,
  1350.                       ºá»αÑΘÑ¡            πßΓá¡«ó½Ñ¡¡«Ñ ñ½∩ Σá⌐½á, ¡Ñ
  1351.                                           ºáñáÑΓ ΓαÑíπѼδ⌐ ñ«ßΓπ».
  1352.                                           ¥Γá «Φ¿í¬á ó«º¡¿¬áÑΓ  ó ΓÑσ
  1353.                                           ß½πτá∩σ,   ¬«úñá    ßñѽá¡á
  1354.                                           »«»δΓ¬á  ñ«ßΓπ»á  ¬   Σá⌐½π
  1355.                                           »πΓѼ,  ¬«Γ«αδ⌐ ¡Ñß«ó¼ÑßΓ¿¼
  1356.                                           ß     áΓα¿íπΓἿ     Σá⌐½á.
  1357.                                           ìá»α¿¼Ñα,  «Φ¿í¬á  ó«º¡¿¬½á
  1358.                                           »α¿ τΓÑ¡¿¿ ¿º Σá⌐½á,  ¬«Γ«-
  1359.                                           αδ⌐ ¡Ñ ∩ó½∩ÑΓß∩   «Γ¬αδΓδ¼;
  1360.                                           »α¿ ºá»¿ß¿ ó «Γ¬αδΓδ⌐ Σá⌐½,
  1361.                                           »αÑñ¡áº¡áτÑ¡¡δ⌐ Γ«½∞¬«  ñ½∩
  1362.                                           τΓÑ¡¿∩;    »α¿     «Γ¬αδΓ¿¿
  1363.                                           ñ¿αÑ¬Γ«α¿∩ ó¼ÑßΓ« Σá⌐½á.  é
  1364.                                           óÑαß¿∩σ   MS   DOS   3.0  ¿
  1365.                                           ßΓáαΦ¿σ EACCES ¼«ªÑΓ π¬áºδ-
  1366.                                           óáΓ∞ ¡á ¡áαπΦÑ¡¿Ñ í½«¬¿α«ó-
  1367.                                           ¬¿ ¿½¿ αѪ¿¼á αáºñѽѡ¿∩.
  1368.                                           ÄΦ¿í¬á ó«º¡¿¬áÑΓ ΓᬪѠ »α¿
  1369.                                           »ÑαÑ¿¼Ñ¡«óá¡¿¿  Σá⌐½á   ¿½¿
  1370.                                           «ú½áó½Ñ¡¿∩; »α¿ π¡¿τΓ«ªÑ¡¿¿
  1371.                                           ßπΘÑßΓóπεΘÑú« ñ¿αÑ¬Γ«α¿∩.
  1372.                                        
  1373.          EBADF        ìÑóÑα¡«Ñ Σá⌐½«ó«Ñ   ç¡áτÑ¡¿Ñ  handle  ñ½∩ Σá⌐½á
  1374.                       τ¿ß½«.              ¡Ñ ∩ó½∩ÑΓß∩ »αáó¿½∞¡δ¼,½¿í«
  1375.                                           «¡« ¡Ñ ßßδ½áÑΓß∩  ¡á «Γ¬αδ-
  1376.                                           Γδ⌐  Σá⌐½;   ½¿í«   ßñѽá¡á
  1377.                                           »«»δΓ¬á  ºá»¿ß¿  ó Σá⌐½ ¿½¿
  1378.                                           ¡á   πßΓα«⌐ßΓó«,   «Γ¬αδΓδÑ
  1379.                                           Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ (¿ ¡á«í«-
  1380.                                           α«Γ).
  1381.                                        
  1382.          EDEADLOCK    î«ªÑΓ ó«º¡¿¬¡πΓ∞    Åα¿¡πñ¿Γѽ∞¡á∩  í½«¬¿α«ó¬á:
  1383.                       ºáó¿ßá¡¿Ñ           Σá⌐½    ¡Ñ     ¼«ªÑΓ   íδΓ∞
  1384.                       (Γπ»¿¬)             í½«¬¿α«óá¡         »«ß½Ñ 10
  1385.                                           »«»δΓ«¬ (ñ½∩ óÑαß¿¿ MS  DOS
  1386.                                           3.0 ¿ »«ß½ÑñπεΘ¿σ).
  1387.                                        
  1388.          EDOM         îáΓѼáΓ¿τÑ߬¿⌐      Çαúπ¼Ñ¡Γ ñ½∩ ¼áΓѼáΓ¿τÑ߬«⌐
  1389.                       áαúπ¼Ñ¡Γ.           Σπ¡¬µ¿¿    ¡Ñ   »α¿¡áñ½Ñª¿Γ
  1390.                                           «í½áßΓ¿  «»αÑñѽѡ¿∩   φΓ«⌐
  1391.                                           Σπ¡¬µ¿¿.
  1392.                    
  1393.          EEXIST       öá⌐½ ßπΘÑßΓóπÑΓ.    ö½áú¿   O_CREATE  ¿  O_EXCL
  1394.                                           «»αÑñÑ½Ñ¡δ   »α¿   «Γ¬αδΓ¿¿
  1395.                                           Σá⌐½á, ¡« Σá⌐½  ß  ºáñá¡¡δ¼
  1396.                                           ¿¼Ñ¡Ñ¼ πªÑ ßπΘÑßΓóπÑΓ.
  1397.            
  1398.          EINVAL       ìÑóÑα¡δ⌐            çáñá¡ ¡ÑóÑα¡δ⌐ áαúπ¼Ñ¡Γ ñ½∩
  1399.                       áαúπ¼Ñ¡Γ.           «ñ¡«ú«     ¿º    áαúπ¼Ñ¡Γ«ó
  1400.                                           Σπ¡¬µ¿¿. ìá»α¿¼Ñα, º¡áτÑ¡¿Ñ
  1401.                                           ñ½∩  origin  (áñαÑß  ¡áτá½á
  1402.                                           »α«úαá¼¼δ), ºáñáÑΓß∩, ¬«úñá
  1403.  
  1404.                                       - 262 -
  1405.          
  1406.          
  1407.                                           π¬áºáΓѽ∞ ¡á Σá⌐½ ¡áσ«ñ¿Γß∩
  1408.                                           »ÑαÑñ   ¡áτὫ¼ Σá⌐½á.
  1409.                                        
  1410.          EMFILE       î¡«ú« «Γ¬αδΓδσ      äαπú¿Ñ handle-αδ ñ½∩  Σá⌐½á
  1411.                                           ¡Ññ«ßΓπ»¡δ,  Γᬠ¬á¬ ¡Ñ½∞º∩
  1412.                                           í«½∞ΦÑ «Γ¬αδΓ∞ ñαπú¿Ñ Σá⌐½δ.
  1413.                                        
  1414.          ENOENT       ìÑΓ ñá¡¡«ú« Σá⌐½á   çáñá¡¡δ⌐      Σá⌐½      ¿½¿
  1415.                       ¿½¿ ñ¿αÑ¬Γ«α¿∩.     ñ¿αÑ¬Γ«α¿⌐  ¡Ñ   ßπΘÑßΓóπÑΓ
  1416.                                           ¿½¿  ¡Ñ  ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡.
  1417.                                           ¥Γ«   ß««íΘÑ¡¿Ñ  ó«º¡¿¬áÑΓ,
  1418.                                           Ñß½¿ ºáñá¡¡δ⌐ Σá⌐½  ¡Ñ  ßπ-
  1419.                                           ΘÑßΓóπÑΓ ¿½¿ ó ßπΘÑßΓóπεΘѼ
  1420.                                           ñ¿αÑ¬Γ«α¿¿   ¡Ñ  «»αÑñѽѡá
  1421.                                           ¬«¼»«¡Ñ¡Γá path-¿¼Ñ¡¿.
  1422.                                
  1423.          ENOEXEC      ÄΦ¿í¬á .EXE-        æñѽá¡á   »«»δΓ¬á   ß«ºñáΓ∞
  1424.                       Σ«α¼áΓá.            Σá⌐½, ¬«Γ«αδ⌐  ¡Ñ  ∩ó½∩ÑΓß∩
  1425.                                           óδ»«½¡¿¼δ¼    ¿½¿   ¬«Γ«αδ⌐
  1426.                                           ¿¼ÑÑΓ ¡ÑóÑα¡δ⌐ .EXE-Σ«α¼áΓ.
  1427.                                        
  1428.          ENOMEM       Åá¼∩Γ¿ ¡Ññ«ßΓá-     ä«ßΓπ»¡«       ¡Ññ«ßΓáΓ«τ¡«
  1429.                       Γ«τ¡«.              »á¼∩Γ¿. ¥Γ« ß««íΘÑ¡¿Ñ ¼«ªÑΓ
  1430.                                           ó«º¡¿¬áΓ∞,    ¬«úñá     ñ½∩
  1431.                                           óδ»«½¡Ñ¡¿∩   child-»α«µÑßßá
  1432.                                           »á¼∩Γ¿   ¡Ññ«ßΓáΓ«τ¡«,  ¿½¿
  1433.                                           ¬«úñá ñ½∩ »á¼∩Γ¿ ¡Ñ󫺼«ª¡«
  1434.                                           «íÑß»Ñτ¿Γ∞ ΓᬫѠαáß»«½«ªÑ-
  1435.                                           ¡¿Ñ,  ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ »α¿
  1436.                                           ó맮óáσ  sbrk ¿½¿ getcwd.
  1437.                                        
  1438.          ENOSPC       ìá πßΓα«⌐ßΓóÑ ¡Ñ    æó«í«ñ¡«ú« »α«ßΓαá¡ßΓóá  ¡á
  1439.                       «ßΓὫß∞ ßó«í«ñ-    πßΓα«⌐ßΓóÑ    ¡Ññ«ßΓáΓ«τ¡«,
  1440.                       ¡«ú« ¼ÑßΓá          τΓ«íδ  »α«¿ºóÑßΓ¿   ºá»¿ß∞,
  1441.                                           (¡á»α¿¼Ñα, ñ¿ß¬ »«½«¡).
  1442.                                        
  1443.          ERANGE       ÉѺπ½∞ΓáΓ «τÑ¡∞     Çαúπ¼Ñ¡Γ ñ½∩ ¼áΓѼáΓ¿τÑ߬«⌐
  1444.                       í«½∞Φ«⌐.            Σπ¡¬µ¿¿ «τÑ¡∞ í«½∞Φ«⌐, »«-
  1445.                                           φΓ«¼π »α«¿ßσ«ñ¿Γ  τáßΓ¿τ¡á∩
  1446.                                           ¿½¿ »«½¡á∩ »«ΓÑα∩ º¡áτ¿¼«ß-
  1447.                                           Γ¿ αѺπ½∞ΓáΓá. ¥Γá   «Φ¿í¬á
  1448.                                           ΓᬪѠ ¼«ªÑΓ  ó«º¡¿¬¡πΓ∞  ó
  1449.                                           ñαπú¿σ    Σπ¡¬µ¿∩σ,   ¬«úñá
  1450.                                           áαúπ¼Ñ¡Γ    í«½∞ΦÑ,     τѼ
  1451.                                           »αÑñ»«½áúáÑΓß∩.  (ìá»α¿¼Ñα,
  1452.                                           ¬«úñá  áαúπ¼Ñ¡Γ  path-¿¼Ñ¡¿
  1453.                                           ñ½∩  Σπ¡¬µ¿¿ getcwd í«½∞ΦÑ,
  1454.                                           τѼ »αÑñ»«½áúáÑΓß∩).
  1455.            
  1456.          EXDEV        ÅÑαѬαÑßΓ¡á∩ ßó∩º∞  æñѽá¡á »«»δΓ¬á »ÑαѼÑΘÑ¡¿∩
  1457.                       ß πßΓα«⌐ßΓó«¼.      Σá⌐½á ¡á ñαπú«Ñ  πßΓα«⌐ßΓó«
  1458.                                           (¿ß»«½∞ºπÑΓß∩ Σ-∩ rename).
  1459.                  
  1460.                                        
  1461.                    
  1462.  
  1463.                                       - 263 -
  1464.          
  1465.          
  1466.                3. îáΓѼáΓ¿τÑ߬¿Ñ «Φ¿í¬¿
  1467.             
  1468.                ÄΦ¿í¬¿,  »α¿óÑñÑ¡¡δÑ ¡¿ªÑ, »«α«ªñáεΓß∩ ¼áΓѼáΓ¿τÑ߬¿¼¿ »α«-
  1469.          µÑñπαἿ í¿í½¿«ΓѬ¿ æ¿. ¥Γ¿ «Φ¿í¬¿ ß««ΓóÑΓßΓóπεΓ Γ«½∞¬« ΓѼ Γ¿»á¼
  1470.          «Φ¿í«¬, ¬«Γ«αδÑ «íΩ∩ó½Ñ¡δ ó  <math.h>,  ¿  ó«ºóαáΘáεΓß∩  Σπ¡¬µ¿Ñ⌐
  1471.          matherr.  ü«½ÑÑ  »«ñα«í¡«  «í«  óßÑσ «Φ¿í¬áσ »α¿óÑñÑ¡« ó «»¿ßá¡¿¿
  1472.          Σπ¡¬µ¿¿ matherr ó τáßΓ¿ 2 ñá¡¡«ú« απ¬«ó«ñßΓóá.
  1473.             
  1474.                            
  1475.            ÄΦ¿í¬á                        Ä»¿ßá¡¿Ñ
  1476.             
  1477.            DOMAIN          Çαúπ¼Ñ¡Γ   ñ½∩  Σπ¡¬µ¿¿  ¡áσ«ñ¿Γß∩  ó¡Ñ
  1478.                            «í½áßΓ¿ «»αÑñѽѡ¿∩ Σπ¡¬µ¿¿.
  1479.                            
  1480.            OVERFLOW        ÉѺπ½∞ΓáΓ «τÑ¡∞ í«½∞Φ«⌐  ñ½∩ »αÑñ«ßΓáó-
  1481.                            ½Ñ¡¿∩ Ñú« ó ó«ºóαáΘáѼ«¼ º¡áτÑ¡¿¿.
  1482.                            
  1483.            PLOSS           é«º¡¿¬½á τáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
  1484.                            
  1485.            SING            Äß«íÑ¡¡«ßΓ∞  áαúπ¼Ñ¡Γá:  áαúπ¼Ñ¡Γ   ñ½∩
  1486.                            Σπ¡¬µ¿¿    ¿¼ÑÑΓ    ¡ÑóÑα¡«Ñ   º¡áτÑ¡¿Ñ
  1487.                            (¡á»α¿¼Ñα,  »ÑαÑßδ½áÑΓß∩ º¡áτÑ¡¿∩ 0   ¬
  1488.                            Γ«⌐ Σπ¡¬µ¿¿, ¬«Γ«αá∩ ΓαÑíπÑΓ ¡Ñ¡π½Ñó«ú«
  1489.                            º¡áτÑ¡¿∩).
  1490.                            
  1491.            TLOSS           é«º¡¿¬½á «íΘá∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
  1492.                            
  1493.            UNDERFLOW       ÉѺπ½∞ΓáΓ «τÑ¡∞ ¼á½Ñ¡∞¬¿⌐ ñ½∩ »αÑñ«ßΓá-
  1494.                            ó½Ñ¡¿∩  Ñú«  ó  ó«ºóαáΘáѼ«¼  º¡áτÑ¡¿¿.
  1495.  
  1496.                            
  1497.  
  1498.  
  1499.