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

  1.                                       - 214 -
  2.                
  3.                
  4.                 
  5.                àß½¿  pathname ¡Ñ ¿¼ÑÑΓ αáßΦ¿αÑ¡¿∩ ñ½∩ ¿¼Ñ¡¿ Σá⌐½á ¿½¿ Ñß½¿
  6.          «¡« ¡Ñ ºá¬á¡τ¿óáÑΓß∩ Γ«τ¬«⌐ (.), Γ«úñá Σπ¡¬µ¿∩ spawn πßΓá¡áó½¿óá-
  7.          ÑΓ αáßΦ¿αÑ¡¿Ñ .EXE. àß½¿ pathname ¿¼ÑÑΓ αáßΦ¿αÑ¡¿Ñ, Γ«  ¿ß»«½∞ºπ-
  8.          ÑΓß∩  Γ«½∞¬«  φΓ« αáßΦ¿αÑ¡¿Ñ. àß½¿ pathname ºá¬á¡τ¿óáÑΓß∩ Γ«τ¬«⌐,
  9.          spawn  «ßπΘÑßΓó½∩ÑΓ  »«¿ß¬  pathname  íѺ  αáßΦ¿αÑ¡¿∩.  Åα«µÑñπαδ
  10.          execlp, execlpe, execvpe «ßπΘÑßΓó½∩εΓ »«¿ß¬ ñ½∩ pathname (¿ß»«½∞-
  11.          ºπ∩ ΓÑ ªÑ »α«µÑñπαδ) ó ñ¿αÑ¬Γ«α¿∩σ, «»αÑñѽѡ¡δσ »ÑαѼѡ¡«⌐ «¬απ-
  12.          ªÑ¡¿∩ PATH.
  13.                Çαúπ¼Ñ¡Γδ  ñ½∩  ¡«ó«ú«  »α«µÑßßá »ÑαÑñáεΓß∩ ¬á¬ áαúπ¼Ñ¡Γδ ó
  14.          ó맮óÑ spawn, ºáñáóá∩ «ñ¿¡ ¿½¿  í«½ÑÑ  π¬áºáΓѽÑ⌐  ¡á  ß¿¼ó«½∞¡δÑ
  15.          ßΓ᫬¿.  ¥Γ¿  ß¿¼ó«½∞¡δÑ  ßΓ᫬¿  «íαáºπεΓ  ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó ñ½∩
  16.          child-»α«µÑßßá. ÄíΘá∩ ñ½¿¡á ßΓ᫬, «íαáºπεΘ¿σ  ß»¿ß«¬  áαúπ¼Ñ¡Γ«ó
  17.          ñ½∩  ¡«ó«ú« »α«µÑßßá, ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 128 íá⌐Γ«ó. ìπ½Ñó«⌐ ß¿¼-
  18.          ó«½ «¬«¡τá¡¿∩ '\0'ñ½∩ ¬áªñ«⌐ ßΓ᫬¿ ó φΓπ ñ½¿¡π ¡Ñ ºáßτ¿ΓδóáÑΓß∩,
  19.          á ß¿¼ó«½δ »α«íѽá (áóΓ«¼áΓ¿τÑ߬¿ óßΓáó½∩ѼδÑ ñ½∩ áαúπ¼Ñ¡Γ«ó)-ºáß-
  20.          τ¿ΓδóáεΓß∩.
  21.                ô¬áºáΓѽ¿ áαúπ¼Ñ¡Γ«ó ¼«úπΓ »ÑαÑñáóáΓ∞ß∩ ¬á¬ «Γñѽ∞¡δÑ áαúπ-
  22.          ¼Ñ¡Γδ (ó execl, execle, execlp, execlpe) ¿½¿ ¬á¬ ¼áßß¿ó  π¬áºáΓÑ-
  23.          ½Ñ⌐  (ó execv, execve, execvp, execvpe). Å« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ áα-
  24.          úπ¼Ñ¡Γ - arg0 ¿½¿ argv[0] - ¼«ªÑΓ »ÑαÑñáóáΓ∞ß∩ ¬  child-»α«µÑßßπ.
  25.          Å«  πß½«ó¿ε  φëà áαúπ¼Ñ¡Γ  ∩ó½∩ÑΓß∩  ¬«»¿Ñ⌐ áαúπ¼Ñ¡Γá pathname.
  26.          (äαπú«Ñ º¡áτÑ¡¿Ñ «Φ¿í¬¿ ¡Ñ óδαáíáΓδóáÑΓß∩).  é  óÑαß¿∩σ  MS  DOS,
  27.          αá¡¡¿σ «Γ 3.0, »ÑαÑñáóáѼ«Ñ º¡áτÑ¡¿Ñ arg0 ¿½¿ argv[0] ¡Ñ ñ«ßΓπ»¡«
  28.          ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó child-»α«µÑßßÑ. Äñ¡á¬«, ñ½∩ óÑαß¿⌐ MS DOS 3.0
  29.          ¿ ßΓáαΦÑ pathname ñ«ßΓπ»¡« τÑαѺ arg0 ¿½¿ argv[0].
  30.                é맮óδ  execl,  execle, execlp, execlpe «íδτ¡« ¿ß»«½∞ºπεΓß∩
  31.          Γ«úñá, ¬«úñá ¬«½¿τÑßΓó«  áαúπ¼Ñ¡Γ«ó  ¿ºóÑßΓ¡«  ºáαá¡ÑÑ.  Çαúπ¼Ñ¡Γ
  32.          arg0 «íδτ¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á pathname. Çαúπ¼Ñ¡Γδ «Γ arg1 ñ«
  33.          argn  ∩ó½∩εΓß∩ π¬áºáΓѽ∩¼¿ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ ¡«óδ⌐
  34.          ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó. NULL-π¬áºáΓѽ∞, ¿ñπΘ¿⌐ ºá áαúπ¼Ñ¡Γ«¼ argn, «»-
  35.          αÑñѽ∩ÑΓ ¬«¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
  36.                é맮óδ execv, execve, execvp, execvpe  ¿ß»«½∞ºπεΓß∩,  ¬«úñá
  37.          τ¿ß½«  áαúπ¼Ñ¡Γ«ó ñ½∩ ¡«ó«ú« »α«µÑßßá ∩ó½∩ÑΓß∩ »ÑαѼѡ¡δ¼. ô¬áºá-
  38.          Γѽ¿ ¡á áαúπ¼Ñ¡Γδ »ÑαÑßδ½áεΓß∩ ¬á¬ ¼áßß¿ó argv. Çαúπ¼Ñ¡Γ  argv[0]
  39.          «íδτ¡«  ∩ó½∩ÑΓß∩  π¬áºáΓѽѼ ¡á pathname. Çαúπ¼Ñ¡Γδ «Γ argv[1] ñ«
  40.          argv[n] ∩ó½∩εΓß∩ π¬áºáΓѽ∩¼¿ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ ¡«-
  41.          óδ⌐ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó. Çαúπ¼Ñ¡Γ argv[n+1] ¼«ªÑΓ íδΓ∞  NULL-π¬áºá-
  42.          ΓѽѼ ñ½∩ «»αÑñѽѡ¿∩ ¬«¡µá ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
  43.                öá⌐½δ,  «Γ¬αδΓδÑ »α¿ ó맮óÑ spawn, «ßΓáεΓß∩ «Γ¬αδΓ묨 ó ¡«-
  44.          ó«¼ »α«µÑßßÑ. é ó맮óáσ execl, execlp, execv, execvp,  child-»α«-
  45.          µÑßß ¡áß½ÑñπÑΓ «¬απªÑ¡¿Ñ parent-»α«µÑßßá. é맮óδ execle, execlpe,
  46.          execve,  execvpe  »«ºó«½∩εΓ  »«½∞º«óáΓÑ½ε  ¿º¼Ñ¡∩Γ∞ «¬απªÑ¡¿Ñ ñ½∩
  47.          child-»α«µÑßßá, »ÑαÑñáóá∩ ß»¿ß«¬ πßΓá¡«ó½Ñ¡¡«ú«  «¬απªÑ¡¿∩  τÑαѺ
  48.          áαúπ¼Ñ¡Γ envp.
  49.                Çαúπ¼Ñ¡Γ envp ∩ó½∩ÑΓß∩ ¼áß߿󫼠߿¼ó«½∞¡δσ π¬áºáΓѽÑ⌐, ¬áª-
  50.          ñδ⌐  φ½Ñ¼Ñ¡Γ  ¬«Γ«α«ú«  (¿ß¬½ετá∩ »«ß½Ññ¡¿⌐ φ½Ñ¼Ñ¡Γ) π¬áºδóáÑΓ ¡á
  51.          ßΓ᫬π, ºá¬á¡τ¿óáεΘπεß∩ ¡π½Ñ¼ ¿ «»αÑñѽ∩εΘπε  »ÑαѼѡ¡πε  «¬απªÑ-
  52.          ¡¿∩. Äíδτ¡« φΓá ßΓα«¬á ¿¼ÑÑΓ Σ«α¼π:
  53.                NAME = value,
  54.                úñÑ NAME - ¿¼∩ »ÑαѼѡ¡«⌐ «¬απªÑ¡¿∩, value - º¡áτÑ¡¿Ñ ßΓα«-
  55.          ¬¿, ó ¬«Γ«α«⌐ πßΓá¡áó½¿óáÑΓß∩ φΓá »ÑαѼѡ¡á∩. (çá¼ÑΓ¿¼, τΓ« value
  56.          ¡Ñ ºá¬½ετáÑΓß∩ ó ¬áóδτ¬¿ "..."). Å«ß½Ññ¡¿¼ φ½Ñ¼Ñ¡Γ«¼ ¼áßß¿óá envp
  57.          ñ«½ªÑ¡ íδΓ∞ NULL.
  58.                Child-»α«µÑßß ¡áß½ÑñπÑΓ πßΓá¡«ó½Ñ¡¡«Ñ «¬απªÑ¡¿Ñ parent-»α«-
  59.          µÑßßá, ¬«úñá envp ∩ó½∩ÑΓß∩ NULL.
  60.  
  61.                                       - 215 -
  62.          
  63.          
  64.  
  65.       
  66.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  67.             
  68.                é«ºóαáΘáѼ«Ñ   º¡áτÑ¡¿Ñ   ∩ó½∩ÑΓß∩   ßΓáΓπß«¼   óδσ«ñá   ¿º
  69.          child-»α«µÑßßá. æΓáΓπß óδσ«ñá αáóÑ¡ 0, Ñß½¿ »α«µÑßß ¡«α¼á½∞¡« ºá-
  70.          óÑαΦÑ¡. æΓáΓπß óδσ«ñá πßΓá¡áó½¿óáÑΓß∩ ó ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ,  Ñß½¿
  71.          child-»α«µÑßß «ß«íδ¼ «íαẫ¼ óδºδóáÑΓ »α«µÑñπαπ exit ó¼ÑßΓÑ ß ¡Ñ-
  72.          ¡π½Ñóδ¼  áαúπ¼Ñ¡Γ«¼.  àß½¿ ßΓáΓπß ¡Ñ πßΓá¡«ó½Ñ¡, Γ« »«½«ª¿Γѽ∞¡δ⌐
  73.          ßΓáΓπß óδσ«ñá π¬áºδóáÑΓ ¡á ¡Ñ»αÑñó¿ñÑ¡¡δ⌐ óδσ«ñ ¿º »α«úαá¼¼δ »«ß-
  74.          αÑñßΓó«¼ abort ¿½¿ »αÑαδóá¡¿∩.
  75.                é«ºóαáΘáѼ«Ñ  º¡áτÑ¡¿Ñ   -1   ßó¿ñÑΓѽ∞ßΓóπÑΓ   «í   «Φ¿í¬Ñ
  76.          (child-»α«µÑßß  ¡Ñ  ßΓáαΓ«óá½), ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º
  77.          ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
  78.          
  79.          çìÇùàìêà                         àâÄ æî¢æï
  80.                            
  81.          E2BIG                æ»¿ß«¬ áαúπ¼Ñ¡Γ«ó  »αÑóδΦáÑΓ  128  íá⌐Γ
  82.                               ¿½¿    »α«ßΓαáßΓó«,    ΓαÑíπѼ«Ñ    ñ½∩
  83.                               ¿¡Σ«α¼áµ¿¿ «¬απªÑ¡¿∩,  »αÑóδΦáÑΓ 32è.
  84.                            
  85.          EINVAL               Çαúπ¼Ñ¡Γ modeflag ¡ÑóÑα¡δ⌐.
  86.                            
  87.          ENOENT               öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  88.                            
  89.          ENOEXEC              Ä»αÑñѽѡ¡δ⌐ Σá⌐½ ¡Ñ ∩ó½∩ÑΓß∩ óδ»«½¿¼δ¼
  90.                               ¿½¿ ¿¼ÑÑΓ ¡ÑóÑα¡δ⌐ Σ«α¼áΓ.
  91.                            
  92.          ENOMEN               ä«ßΓáΓ«τ¡á∩  »á¼∩Γ∞  ¡Ñ  ñ«ßΓπ»¡á   ñ½∩
  93.                               óδ»«½¡Ñ¡¿∩ child-»α«µÑßßá.
  94.             
  95.                çá¼Ñτá¡¿Ñ! é맮óδ spawn ¡Ñ ß«σαá¡∩εΓ  αѪ¿¼  »αÑ«íαẫóá¡¿∩
  96.          ñ½∩ «Γ¬αδΓδσ Σá⌐½«ó. àß½¿ child-»α«µÑßß ¿ß»«½∞ºπÑΓ Σá⌐½δ, π¡áß½Ñ-
  97.          ñ«óá¡¡δÑ  «Γ parent-»α«µÑßßá, Γ«úñá »α«µÑñπαá setmode »α¿¼Ñ¡∩ÑΓß∩
  98.          ñ½∩ πßΓᡫ󬿠ΓαÑíπѼ«ú« αѪ¿¼á »αÑ«íαẫóá¡¿∩ ñ½∩ φΓ¿σ Σá⌐½«ó.
  99.                é child-»α«µÑßßÑ, ß«ºñá¡¡«¼ ó맮óἿ »α«µÑñπα  spawn,  ß¿ú-
  100.          ¡á½∞¡δÑ  πßΓᡫ󬿠¡Ñ ß«σαá¡∩εΓß∩. é child-»α«µÑßßÑ «¡¿ »ÑαÑπßΓá-
  101.          ¡áó½¿óáεΓß∩ »« π¼«½τá¡¿ε.
  102.             
  103.                C¼. ΓᬪѠabort, execl,  execle,  execlp,  execlpe,  execv,
  104.          execve, execvp, execvpe, exit, _exit, onexit, system.
  105.       
  106.                Åα¿¼Ñα.
  107.             
  108.                #include <stdio.h>
  109.                #include <process.h>
  110.             
  111.                extern char **environ;
  112.             
  113.                char *args[4];
  114.                int result;
  115.             
  116.                args[0]="child";
  117.                args[1]="one";
  118.                args[2]="two";
  119.  
  120.                                       - 216 -
  121.          
  122.          
  123.                args[3]=NULL;
  124.                .
  125.                .
  126.                .
  127.                /*  óßÑ  ß½ÑñπεΘ¿Ñ  «»ÑαáΓ«αδ  »«ºó«½∩εΓ »«α«ªñáΓ∞ »α«µÑßß,
  128.          ¡áºóá¡¡δ⌐ "child.exe", ¿ »ÑαÑñáóáΓ∞ Ñ¼π Γα¿ áαúπ¼Ñ¡Γá. ÅÑαóδÑ Γα¿
  129.          áαúπ¼Ñ¡Γá »α¿«ßΓá¡áó½¿óáεΓ parent-»α«µÑßß, á »«ß½Ññ¡¿Ñ Γα¿ - ßó∩-
  130.          ºδóáεΓ parent-»α«µÑßß ß child */.
  131.             
  132.                result=spawnl(P_WAIT,"child.exe","child","one","two",
  133.                    NULL);
  134.                result=spawnle(P_WAIT,"child.exe","child","one",
  135.                    "two", NULL, environ);
  136.                result=spawnlp(P_WAIT, "child.exe","child","one",
  137.                    "two", NULL);
  138.                result=spawnv(P_OVERLAY, "child.exe", args);
  139.                result=spawnve(P_OVERLAY, "child.exe", args, environ);
  140.                result=spawnvp(P_OVERLAY, "child.exe", args);
  141.       
  142.             
  143.                SPRINTF
  144.             
  145.                #include <stdio.h>
  146.             
  147.                int sprintf(buffer, format-string[, argument...]);
  148.                char *buffer;              »á¼∩Γ∞ ñ½∩  σαá¡Ñ¡¿∩ óδó«ñá
  149.                char *format-string;       ßΓα«¬á  π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
  150.             
  151.                Ä»¿ßá¡¿Ñ.
  152.             
  153.                öπ¡¬µ¿∩ sprintf Σ«α¼áΓ¿απÑΓ ¿ ºá»«¼¿¡áÑΓ ¡áí«αδ ß¿¼ó«½«ó  ¿
  154.          º¡áτÑ¡¿⌐  ó buffer. èáªñδ⌐ áαúπ¼Ñ¡Γ argument (Ñß½¿ «¡ ÑßΓ∞), »αÑ-
  155.          «íαáºπÑΓß∩ ¿ óδó«ñ¿Γß∩ ß«ú½áß¡« ß««ΓóÑΓßΓóπεΘÑ⌐ ß»Ñµ¿Σ¿¬áµ¿¿ Σ«α-
  156.          ¼áΓá ó format-string.
  157.                Format-string ß«ßΓ«¿Γ ¿º »«α∩ñ¬«óδσ ß¿¼ó«½«ó ¿ ¿¼ÑÑΓ Γπ  ªÑ
  158.          ßá¼πε  Σ«α¼π  ¿  Σπ¡¬µ¿ε,  τΓ« áαúπ¼Ñ¡Γ format-string ñ½∩ Σπ¡¬µ¿¿
  159.          printf. æ¼«Γα¿ΓÑ Σπ¡¬µ¿ε printf ñ½∩ «»¿ßá¡¿∩ format-string ¿  áα-
  160.          úπ¼Ñ¡Γ«ó.
  161.             
  162.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  163.             
  164.                öπ¡¬µ¿∩  sprintf ó«ºóαáΘáÑΓ ¬«½¿τÑßΓó« ß¿¼ó«½«ó, ºá»¿ßá¡¡δσ
  165.          ó buffer.
  166.                æ¼. ΓᬪѠfprintf, printf, sscanf.
  167.             
  168.                Åα¿¼Ñα.
  169.             
  170.                #include <stdio.h>
  171.             
  172.                char buffer[200];
  173.                int i, j;
  174.                double fp;
  175.                char *s = "computer";
  176.                char c;
  177.                .
  178.  
  179.                                       - 217 -
  180.          
  181.          
  182.                .
  183.                .
  184.             
  185.                /*  Σ«α¼áΓ¿απÑΓ ¿ »ÑτáΓáÑΓ αẽ¿τ¡δÑ ñá¡¡δÑ */
  186.             
  187.                j = sprintf(buffer, "%s\n", s);
  188.                j + = sprintf(buffer+j, "%c\n", c);
  189.                j + = sprintf(buffer+j, "%d\n",i);
  190.                j + = sprintf(buffer+j, "%f\n",fp);.
  191.       
  192.             
  193.                SQRT
  194.             
  195.                #include <math.h>
  196.             
  197.                double sqrt(x);
  198.                double x;         ¡Ñ«Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐
  199.                                  Γ«τ¬«⌐
  200.             
  201.                Ä»¿ßá¡¿Ñ.
  202.             
  203.                öπ¡¬µ¿∩ sqrt óδτ¿ß½∩ÑΓ ¬óáñαáΓ¡δ⌐ ¬«αÑ¡∞ x.
  204.             
  205.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  206.             
  207.                öπ¡¬µ¿∩ sqrt ó«ºóαáΘáÑΓ  αѺπ½∞ΓáΓ  óδτ¿ß½Ñ¡¿∩  ¬óáñαáΓ¡«ú«
  208.          ¬«α¡∩.  àß½¿  x  -  «Γα¿µáΓѽ∞¡«Ñ,  Σπ¡¬µ¿∩ »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í
  209.          «Φ¿í¬Ñ DOMAIN ó stderr, πßΓá¡áó½¿óáÑΓ errno ó EDOM  ¿  ó«ºóαáΘáÑΓ
  210.          0.
  211.                Äíαaí«Γ¬a  «Φ¿í«¬  ¼«ªÑΓ  íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿º¼Ñ¡Ñ¡¿¿
  212.          »α«µÑñπαδ matherr.
  213.                æ¼. ΓᬪѠexp, log, matherr, pow.
  214.             
  215.                Åα¿¼Ñα.
  216.            
  217.                #include <math.h>
  218.                #include <stdlib.h>
  219.                double x,y,z;
  220.                 .
  221.                .
  222.                .
  223.                if ((z = sqrt(x+y))==o.0)
  224.                if((x+y) < 0.0)
  225.                   perror("sqrt of a negative number");
  226.       
  227.             
  228.                SRAND
  229.             
  230.                #include<stdlib.h>              ΓαÑíπÑΓß∩ Γ«½∞¬«   ñ½∩
  231.                                                «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  232.             
  233.                void srand(seed);
  234.                unsigned seed;                  ¡áτá½∞¡«Ñ   τ¿ß½«  ñ½∩
  235.                                                úÑ¡Ñαᵿ¿    ß½πτá⌐¡δσ
  236.                                                τ¿ßѽ.
  237.  
  238.                                       - 218 -
  239.          
  240.          
  241.             
  242.                Ä»¿ßá¡¿Ñ.
  243.             
  244.                öπ¡¬µ¿∩ srand πßΓá¡áó½¿óáÑΓ ¡áτá½∞¡πε Γ«τ¬π  ñ½∩  úÑ¡Ñαᵿ¿
  245.          ¼¡«ªÑßΓóá  »ßÑóñ«ß½πτá⌐¡δσ  µÑ½δσ.  é ¬áτÑßΓóÑ áαúπ¼Ñ¡Γá seed ñ½∩
  246.          »ÑαÑπßΓᡫ󬿠úÑ¡ÑαáΓ«αá ¿ß»«½∞ºπÑΓß∩ 1.  ïεí«Ñ  ñαπú«Ñ  º¡áτÑ¡¿Ñ
  247.          seed πßΓá¡áó½¿óáÑΓ úÑ¡ÑαáΓ«α ó ¡áτá½∞¡πε ß½πτá⌐¡πε Γ«τ¬π.
  248.                öπ¡¬µ¿∩  rand  ¿ß»«½∞ºπÑΓß∩ ñ½∩ »«¿ß¬á ßúÑ¡Ñα¿α«óá¡¡δσ ß½π-
  249.          τá⌐¡δσ τ¿ßѽ.
  250.             
  251.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  252.             
  253.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  254.                æ¼. ΓᬪѠrand.
  255.             
  256.             
  257.                Åα¿¼Ñα.
  258.            
  259.                #include <stdlib.h>
  260.                #include <stdio.h>
  261.              
  262.                int x, ranvals [20];
  263.             
  264.                /* πßΓá¡áó½¿óáÑΓ úÑ¡ÑαáΓ«α ß½πτá⌐¡δσ τ¿ßѽ ó ¡áτá½∞¡«Ñ ß«ß-
  265.          Γ«∩¡¿Ñ ¿ ß«σαá¡∩ÑΓ ó ¼áßß¿óÑ 20 »Ñαóδσ ßúÑ¡Ñα¿α«óá¡¡δσ  ß½πτá⌐¡δσ
  266.          τ¿ßѽ. */
  267.             
  268.                srand(17);
  269.                for (x = 0; x < 20; ranvals[x++] = rand())
  270.                          ;.
  271.       
  272.  
  273.                SSCANF
  274.             
  275.                #include <stdio.h>
  276.             
  277.                int sscanf(buffer, format-string[, argument...]);
  278.                char *buffer;               σαá¡¿¼δÑ ñá¡¡δÑ
  279.                char *format-string;        ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
  280.             
  281.                Ä»¿ßá¡¿Ñ.
  282.             
  283.                öπ¡¬µ¿∩  sscanf τ¿ΓáÑΓ ñá¡¡δÑ ¿º buffer ó αáß»«½«ªÑ¡¿Ñ, ºá-
  284.          ñáóáѼ«Ñ arguments. èáªñδ⌐ argument ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ ¡á »Ñ-
  285.          αѼѡ¡πε Γᬫú« Γ¿»á, ¬«Γ«αá∩ ß««ΓóÑΓßΓóπÑΓ Γ¿»π, «»αÑñѽ¡¡¡«¼π ó
  286.          format-string.
  287.                Format-string ¿¡ΓÑα»αÑΓ¿απÑΓ »«½∩ óó«ñá ¿ ¿¼ÑÑΓ Γπ ªÑ ßá¼πε
  288.          Σ«α¼π ¿ Σπ¡¬µ¿ε, τΓ« áαúπ¼Ñ¡Γ format-string  ñ½∩  Σπ¡¬µ¿¿  scanf.
  289.          æ¼«Γα¿ΓÑ Σπ¡¬µ¿ε scanf ñ½∩ «»¿ßá¡¿∩ format-string.
  290.             
  291.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  292.         
  293.                öπ¡¬µ¿∩  sscanf ó«ºóαáΘáÑΓ ¬«½¿τÑßΓó« πß»ÑΦ¡« »αÑ«íαẫóá¡-
  294.          ¡δσ ¿ ¡áº¡áτÑ¡¡δσ »«½Ñ⌐. é ó«ºóαáΘáѼ«¼  º¡áτÑ¡¿¿  ¡Ñ  ß«ñÑαªáΓß∩
  295.          »α«τ¿Γá¡¡δÑ ¡« ¡Ñ ¡áº¡áτÑ¡¡δÑ »«½∩. ç¡áτÑ¡¿Ñ EOF ó«ºóαáΘáÑΓß∩ »α¿
  296.  
  297.                                       - 219 -
  298.          
  299.          
  300.          »«»δΓ¬Ñ ßτ¿Γδóá¡¿∩ ¬«¡µá ßΓ᫬¿.髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ 0 «º¡áτáÑΓ,
  301.          τΓ« ¡ÑΓ ¡áº¡áτÑ¡¡δσ »«½Ñ⌐.
  302.                æ¼. ΓᬪѠfscanf, scanf, sprintf.
  303.             
  304.                Åα¿¼Ñα.
  305.             
  306.                #include <stdio.h>
  307.                char *tokenstring = "15 12 14...";
  308.                int i;
  309.                float fp;
  310.                char s[81];
  311.                char c;
  312.                .
  313.                 .
  314.                .
  315.                /* óó«ñ αẽ¿τ¡δσ ñá¡¡δσ */
  316.             
  317.                sscanf(tokenstring, "%s", s);
  318.                sscanf(tokenstring, " %c", &c);
  319.                sscanf(tokenstring, "%d", &i);
  320.                sscanf(tokenstring, "%f", fp);.
  321.             
  322.                STACKAVAIL
  323.             
  324.                #include <malloc.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  325.                                       Σπ¡¬µ¿¿
  326.                unsigned int stackavail();
  327.             
  328.             
  329.                Ä»¿ßá¡¿Ñ.
  330.             
  331.                öπ¡¬µ¿∩  stackavail ó«ºóαáΘáÑΓ »α¿í½¿º¿Γѽ∞¡δ⌐ αẼÑα ßΓѬá
  332.          ó íá⌐Γáσ, ñ«ßΓπ»¡«ú« ñ½∩ ñ¿¡á¼¿τÑ߬«ú« αẼÑΘÑ¡¿∩ »á¼∩Γ¿ »«ßαÑñß-
  333.          Γó«¼ Σπ¡¬µ¿¿ alloca.
  334.             
  335.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  336.             
  337.                öπ¡¬µ¿∩ stackavail ó«ºóαáΘáÑΓ αẼÑα ó íá⌐Γáσ ¬á¬ íѺº¡á¬«-
  338.          ó«Ñ µÑ½«Ñ.
  339.                æ¼. ΓᬪѠalloca, freect, memavl.
  340.             
  341.                Åα¿¼Ñα.
  342.             
  343.                #include <malloc.h>
  344.                
  345.                main()
  346.                {
  347.                char * ptr;
  348.  
  349.                printf("Stack memory available before alloca=%u\n",
  350.                      stackavail());
  351.                ptr=alloca(100*sizeof(char));
  352.                printf("Stack memory available after alloca=%u\n",
  353.                      stackavail());
  354.                }
  355.  
  356.                                       - 220 -
  357.          
  358.          
  359.       
  360.             
  361.                STAT
  362.             
  363.                #include <sys\types.h>
  364.                #include <sys\stat.h>
  365.             
  366.                int stat(pathname, buffer);
  367.                char *pathname;       path-¿¼∩ ßπΘÑßΓóπεΘÑú« Σá⌐½á
  368.                struct stat *buffer;  π¬áºáΓѽ∞ ¡á ßΓ᫬π, »α¿¡¿¼áεΘπε
  369.                                      αѺπ½∞ΓáΓδ
  370.             
  371.                Ä»¿ßá¡¿Ñ.
  372.             
  373.                öπ¡¬µ¿∩ stat »«½πτáÑΓ ¿¡Σ«α¼áµ¿ε «  Σá⌐½Ñ  ¿½¿  ñ¿αÑ¬Γ«α¿¿,
  374.          «»αÑñѽѡ¡«¼ »« pathname, ¿ ºá»«¼¿¡áÑΓ ÑÑ ó ßΓαπ¬ΓπαÑ, ¡á ¬«Γ«απε
  375.          π¬áºδóáÑΓ  buffer.  æΓαπ¬Γπαá stat, «íΩ∩ó½Ñ¡¡á∩ ó   <sys\stat.h>,
  376.          ß«ñÑαª¿Γ ß½ÑñπεΘ¿Ñ »«½∩.
  377.  
  378.                Å«½Ñ                              ç¡áτÑ¡¿Ñ
  379.                                  
  380.                st_mode              ü¿Γ«óá∩  ¼á߬ᠠñ½∩ ¿¡Σ«α¼áµ¿¿ « αѪ¿¼Ñ
  381.                                     Σá⌐½á.  ü¿Γ   S_IFDIR  πßΓá¡áó½¿óáÑΓß∩,
  382.                                     Ñß½¿  pathname  «»αÑñѽ∩ÑΓ  ñ¿αÑ¬Γ«α¿⌐;
  383.                                     í¿Γ   S_IFREG   πßΓá¡áó½¿óáÑΓß∩,   Ñß½¿
  384.                                     pathname  ßßδ½áÑΓß∩  ¡á  «íδτ¡δ⌐  Σá⌐½.
  385.                                     ü¿Γδ   τΓÑ¡¿∩/ºá»¿ß¿    πßΓá¡áó½¿óáεΓß∩
  386.                                     »«½∞º«óáΓѽѼ ó ß««ΓóÑΓßΓó¿¿ ß  αѪ¿¼«¼
  387.                                     ñ«ßΓπ»á ¬ Σá⌐½π. Å«½∞º«óáΓѽ∞ óδ»«½¡∩ÑΓ
  388.                                     πßΓá¡«ó¬π í¿Γ«ó, ¿ß»«½∞ºπѼδσ ñ½∩  αáß-
  389.                                     Φ¿αÑ¡¿∩ ¿¼Ñ¡¿ Σá⌐½á.
  390.             
  391.                st_dev               ì«¼Ñα   πßΓα«⌐ßΓóá  ñ¿ß¬á,  ß«ñÑαªáΘÑú«
  392.                                     Σá⌐½.
  393.                  
  394.                st_rdev              ì«¼Ñα   πßΓα«⌐ßΓóá  ñ¿ß¬á,  ß«ñÑαªáΘÑú«
  395.                                     Σá⌐½.
  396.                                     (á¡á½«ú¿τ¡« st_dev).
  397.                            
  398.                st_nlink             éßÑúñá 1.
  399.                            
  400.                st_size              ÉẼÑα Σá⌐½á  ó íá⌐Γáσ.
  401.                            
  402.                st_atime             éαѼ∩ »«ß½Ññ¡Ñ⌐ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐½á.
  403.                            
  404.                st_mtime             éαѼ∩ »«ß½Ññ¡Ñ⌐ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐½á
  405.                                     (á¡á½«ú¿τ¡« st_atime).
  406.                            
  407.                st_ctime             éαѼ∩ »«ß½Ññ¡Ñ⌐ ¼«ñ¿Σ¿¬áµ¿¿ Σá⌐½á
  408.                                     (á¡á½«ú¿τ¡« st_atime ¿ st_mtime).
  409.                            
  410.                            
  411.                é ßΓαπ¬ΓπαÑ Γ¿»á stat ßπΘÑßΓóπεΓ Γα¿  ñ«»«½¡¿Γѽ∞¡δσ  »«½∩,
  412.          ¬«Γ«αδÑ ñ½∩ MS DOS ¡Ñ ¿¼ÑεΓ ß¼δß½á.
  413.       
  414.  
  415.                                       - 221 -
  416.          
  417.          
  418.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  419.             
  420.                öπ¡¬µ¿∩  stat ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ »«½πτѡᠿ¡Σ«α¼á-
  421.          µ¿∩ « ßΓáΓπßÑ Σá⌐½á. é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ  «í
  422.          «Φ¿í¬Ñ,  ¿  errno  πßΓá¡áó½¿óáÑΓß∩  ó  ENOENT, Γ.Ñ. ¿¼∩ Σá⌐½á ¿½¿
  423.          path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
  424.             
  425.                æ¼. ΓᬪѠaccess, fstat.
  426.             
  427.                çá¼Ñτá¡¿Ñ. àß½¿ ºáñá¡¡δ⌐ pathname ßßδ½áÑΓß∩ ¡á  πßΓα«⌐ßΓó«,
  428.          »«½∩  αẼÑαá  ¿  óαѼѡ¿  ó ßΓαπ¬ΓπαÑ stat ¡Ñ ¿¼ÑεΓ «ß¼δ߽ѡ¡«ú«
  429.          º¡áτÑ¡¿∩.
  430.             
  431.                Åα¿¼Ñα.
  432.            
  433.                #include <sys\types.h>
  434.                #include <sys\stat.h>
  435.                #include <stdio.h>
  436.             
  437.                struct stat buf;
  438.                int result;
  439.                char *args[4];
  440.                .
  441.                .
  442.                .
  443.                result = stat("child.exe", &buf);
  444.             
  445.                if (result == 0)
  446.                if (buf.st_mode & S_IEXEC)
  447.                   execv("child.exe", args);
  448.             
  449.                _STATUS87
  450.             
  451.                #include <float.h>
  452.             
  453.                unsigned int _status87();       »«½πτáÑΓ ß½«ó« ßΓáΓπßá
  454.                                                »½áóáεΘÑ⌐ Γ«τ¬¿
  455.                                        
  456.                Ä»¿ßá¡¿Ñ.
  457.             
  458.                öπ¡¬µ¿∩ _status87 »«½πτáÑΓ ß½«ó« ßΓáΓπßá  »½áóáεΘÑ⌐  Γ«τ¬¿.
  459.          æ½«ó«  ßΓáΓπßá  »½áóáεΘÑ⌐  Γ«τ¬¿  ∩ó½∩ÑΓß∩ ¬«¼í¿¡áµ¿Ñ⌐ 8087/80287
  460.          ß½«óá  ßΓáΓπßá  ¿  ñαπú¿σ  ß«ßΓ«∩¡¿⌐,  «í¡áαπª¿óáѼδσ  8087/80287
  461.          handler-«¼, Γᬿσ ¬á¬ »ÑαÑ»«½¡Ñ¡¿Ñ ¿ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿ ßΓѬᠻ½á-
  462.          óáεΘÑ⌐ Γ«τ¬¿.
  463.             
  464.                 é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  465.             
  466.                ü¿Γδ  ó  ó«ºóαáΘáѼ«¼  º¡áτÑ¡¿¿ «í«º¡áτáεΓ ßΓáΓπß »½áóáεΘÑ⌐
  467.          Γ«τ¬¿. æ¼«Γα¿ΓÑ include-Σá⌐½ <float.h> ñ½∩ »«½¡«ú«  «»¿ßá¡¿∩  í¿-
  468.          Γ«ó, ó«ºóαáΘáѼδσ Σπ¡¬µ¿⌐ _status87.
  469.             
  470.                çá¼Ñτá¡¿Ñ! ü«½∞Φ¿¡ßΓó« ¿º ¼áΓѼáΓ¿τÑ߬¿σ í¿í½¿«ΓÑτ¡δσ Σπ¡¬-
  471.          µ¿⌐  ¼«ñ¿Σ¿µ¿απεΓ ß½«ó« ßΓáΓπßá 8087/80287 ß ¡Ñ»αÑñ߬áºπÑ¼δ¼¿ αÑ-
  472.          ºπ½∞ΓáΓἿ. é«ºóαáΘáѼδÑ º¡áτÑ¡¿∩ Σπ¡¬µ¿⌐  _clear87  ¿  _status87
  473.  
  474.                                       - 222 -
  475.          
  476.          
  477.          ßΓá¡«ó∩Γß∩  í«½ÑÑ ñ«ßΓ«óÑα¡δ¼¿ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ «»Ñαá-
  478.          µ¿⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ß  ¿ºóÑßΓ¡δ¼¿  ß««íΘÑ¡¿∩¼¿  ß½«óá  ßΓáΓπßá
  479.          »½áóáεΘÑ⌐ Γ«τ¬¿.
  480.                æ¼. ΓᬪѠ_clear87, _control87.
  481.             
  482.                Åα¿¼Ñα.
  483.             
  484.                #include <stdio.h>
  485.                #include <float.h>
  486.             
  487.                double a = 1e-40, b;
  488.                float x,y;
  489.                
  490.                main()
  491.                {
  492.                printf("status=%.4x-clear\n",_status87());
  493.             
  494.                /*  ºá»«¼¡Ñ¡¡«Ñ ó y ∩ó½∩ÑΓß∩ ¡ÑΓ«τ¡δ¼ ¿ ß »«ΓÑα∩¡¡«⌐ º¡áτ¿-
  495.          ¼«ßΓ∞ε */
  496.                y = a;
  497.                printf("status=%.4x-inexect,underflow\n",
  498.                       _status87());
  499.             
  500.                /* y ¡ÑóÑα¡« */
  501.                b = y;
  502.                printf("status=%.4x-inexect,underflow,denormal\n",
  503.                       _status87());
  504.             
  505.                /* «τ¿ßΓ¬á »«½∞º«óáΓѽѼ 8087 ßΓáΓπßá */
  506.                _clear87();
  507.                }
  508.  
  509.                                      
  510.                STRCAT-STRDUP
  511.             
  512.                #include<string.h>            ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  513.                                              Σπ¡¬µ¿¿
  514.             
  515.                char *strcat(string1,string2);
  516.                                              ñ«íáó½∩ÑΓ string2 ¬ string1
  517.                char *string1;                ßΓ᫬á-»α¿Ñ¼¡¿¬
  518.                char *string2;                ßΓ᫬á-¿ßΓ«τ¡¿¬
  519.             
  520.                char *strchr(string,c);       ¡áσ«ñ¿Γ »Ñαó«Ñ óσ«ªñÑ¡¿Ñ
  521.                                              c ó string
  522.                char *string;                 ßΓ᫬á-¿ßΓ«τ¡¿¬
  523.                int c;                        »«¿ß¬«óδ⌐ ß¿¼ó«½
  524.             
  525.                int strsmp(string1,string2);  ßαáó¡¿óáÑΓ ßΓ᫬¿
  526.                char *string1;
  527.                char *string2;
  528.             
  529.                int strcmpi(string1,string2); ßαáó¡¿óáÑΓ   ßΓ᫬¿  ó¡Ñ
  530.                                              ºáó¿ß¿¼«ßΓ¿    «Γ   Γ¿»á
  531.                                              αÑú¿ßΓαá
  532.  
  533.                                       - 223 -
  534.          
  535.          
  536.                char *string1;
  537.                char *string2;
  538.             
  539.                char strcpy(string1,string2); ¬«»¿απÑΓ    string2    ó
  540.                                              string1
  541.                char *string1;                ßΓ᫬á-»α¿Ñ¼¡¿¬
  542.                char *string2;                ßΓ᫬á-¿ßΓ«τ¡¿¬
  543.             
  544.                int strcspn(string1,string2); ¡áσ«ñ¿Γ »Ñαóπε »«ñßΓ᫬π
  545.                                              ß¿¼ó«½«ó  ó  string1, ¡Ñ
  546.                                              óσ«ñ∩Θπε ó string2
  547.                char *string1;                ßΓ᫬á-¿ßΓ«τ¡¿¬
  548.                char *string2;                ¼¡«ªÑßΓó« ß¿¼ó«½«ó
  549.             
  550.                char *strdup(string);         ñπí½¿απÑΓ ßΓ᫬π
  551.                char *string;                 ßΓ᫬á-¿ßΓ«τ¡¿¬
  552.             
  553.                int stricmp(string1,string2); ßαáó¡¿óáÑΓ   ßΓ᫬¿  ó¡Ñ
  554.                                              ºáó¿ß¿¼«ßΓ¿    «Γ   Γ¿»á
  555.                                              αÑú¿ßΓαá
  556.                char *string1;
  557.                char *string2;
  558.             
  559.                Ä»¿ßá¡¿Ñ.
  560.             
  561.                öπ¡¬µ¿¿ strcat, strchr, strcmp,  strcmpi,  strcpy,  strspn,
  562.          strdup,  stricmp  αáí«ΓáεΓ ß« ßΓα«¬á¼¿, «¬á¡τ¿óáεΘ¿¼¿ß∩ '\0' ß¿¼ó«-
  563.          ½«¼. Çαúπ¼Ñ¡Γδ ßΓ᫬ ñ½∩ φΓ¿σ Σπ¡¬µ¿⌐ »αÑñ»«½áúáεΓ ¡á½¿τ¿Ñ  ¡π½Ñ-
  564.          ó«ú« ß¿¼ó«½á ('\0'), «Γ¼ÑτáεΘÑú« ¬«¡Ñµ ßΓ᫬¿.
  565.                Åα¿ ¬«»¿α«óá¡¿¿ ¿½¿ ñ«íáó½Ñ¡¿¿ ßΓ᫬ »α«óÑα¬á ¡á »ÑαÑ»«½¡Ñ-
  566.          ¡¿Ñ ¡Ñ óδ»«½¡∩ÑΓß∩.
  567.                öπ¡¬µ¿∩ strcat ñ«íáó½∩ÑΓ string2 ¬ string1, ºá¬á¡τ¿óáÑΓ αÑ-
  568.          ºπ½∞Γ¿απεΘπε  ßΓα«¬π  ¡π½Ñóδ¼  ß¿¼ó«½«¼ ¿ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
  569.          ßΓ᫬π-»α¿Ñ¼¡¿¬ (string1).
  570.                öπ¡¬µ¿∩ strchr ó«ºóαáΘÑΓ π¬áºáΓѽ∞ ¡á »Ñαó«Ñ óσ«ªñÑ¡¿Ñ c  ó
  571.          string. æ¿¼ó«½ c ¼«ªÑΓ íδΓ∞ ¡π½Ñóδ¼ ß¿¼ó«½«¼ ('\0'); ¡π½Ñó«⌐ ß¿¼ó«½
  572.          «¬«¡τá¡¿∩ string ó¬½ετáÑΓß∩ ó »«¿ß¬. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NULL, Ñß-
  573.          ½¿ ß¿¼ó«½ ¡Ñ ¡á⌐ñÑ¡.
  574.                öπ¡¬µ¿∩  strcmp ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ ßαáó¡¿óáÑΓ ßΓ᫬¿ string1
  575.          ¿ string2 ¿ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, «í«º¡áτáεΘÑÑ ¿σ ß««Γ¡«ΦÑ¡¿Ñ Γá¬,
  576.          ¬á¬ »«¬áºá¡« ¡¿ªÑ.
  577.             
  578.                ç¡áτÑ¡¿Ñ                 àú« ß¼δß½
  579.            
  580.                ¼Ñ¡∞ΦÑ 0           string 1 ¼Ñ¡∞ΦÑ string 2
  581.                 
  582.                0                  string 1 αáó¡á string 2
  583.             
  584.                í«½∞ΦÑ 0           string 1 í«½∞ΦÑ string 2
  585.                 
  586.                öπ¡¬µ¿¿ strcmpi ¿ stricmp ∩ó½∩εΓß∩  »α¿τ¿¡¡«-¡ÑτπóßΓó¿Γѽ∞-
  587.          ¡δ¼¿ óÑαß¿∩¼¿ strcmp. äóá áαúπ¼Ñ¡Γá string1 ¿ string2 ßαáó¡¿óáεΓ-
  588.          ß∩  ó¡Ñ  ºáó¿ß¿¼«ßΓ¿  «Γ Γ¿»á αÑú¿ßΓαá; φΓ« «í«º¡áτáÑΓ, τΓ« Σ«α¼δ
  589.          íπ¬ó óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó αáßß¼áΓα¿óáεΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
  590.                öπ¡¬µ¿∩ strcpy ¬«»¿απÑΓ  string2  (ó¬½ετá∩  ¡π½Ñó«⌐  ß¿¼ó«½
  591.  
  592.                                       - 224 -
  593.          
  594.          
  595.          «¬«¡τá¡¿∩)  ó  αáß»«½«ªÑ¡¿Ñ,  ¬«Γ«α«Ñ  «»αÑñѽ∩ÑΓß∩ »« string1, ¿
  596.          ó«ºóαáΘáÑΓ string1.
  597.                öπ¡¬µ¿∩  strcspn  ó«ºóαáΘáÑΓ  ¿¡ñѬߠ »Ñαó«ú«   ß¿¼ó«½á   ó
  598.          string1, ¬«Γ«αδ⌐ »α¿¡áñ½Ñª¿Γ ¼¡«ªÑßΓóπ ß¿¼ó«½«ó srting2. ¥Γ« º¡á-
  599.          τÑ¡¿Ñ  φ¬ó¿óá½Ñ¡Γ¡« ñ½¿¡Ñ ¡áτá½∞¡«⌐ »«ñßΓ᫬¿ ßΓ᫬¿ string1, ¬«-
  600.          Γ«αá∩ ß«ñÑαª¿Γ óßÑ ß¿¼ó«½δ, ¡Ñ óσ«ñ∩Θ¿Ñ ó ßΓ᫬π string2. Åα¿ »«-
  601.          ¿ß¬Ñ ¡π½ÑóδÑ ß¿¼ó«½δ «¬«¡τá¡¿∩ ¡Ñ αáßß¼áΓα¿óáεΓß∩.  àß½¿  string1
  602.          ¡áτ¿¡áÑΓß∩  ß  ß¿¼ó«½á,  ß«ñÑαªáΘÑú«ß∩  ó ßΓα«¬Ñ string2, strcspn
  603.          ó«ºóαáΘáÑΓ 0.
  604.                öπ¡¬µ¿∩ strdup ºáσóáΓδóáÑΓ »á¼∩Γ∞ (ß ó«ºóαáΓ«¼ malloc)  ñ½∩
  605.          ¬«»¿α«óá¡¿∩  string  ¿  ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »á¼∩Γ∞, ß«ñѪáΘπε
  606.          ß¬«»¿α«óá¡¡πε ßΓ᫬π. öπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NULL, Ñß½¿ »á¼∩Γ∞ ¡Ñ ¼«-
  607.          ªÑΓ íδΓ∞ ºáσóáτÑ¡á.
  608.             
  609.                é«ºóαáΘáѼδÑ º¡áτÑ¡¿∩ ñ½∩ φΓ¿σ Σπ¡¬µ¿⌐ «»¿ßá¡δ óδΦÑ.
  610.                æ¼. ΓᬪѠstrncat,  strncmp,  strncpy,  ctrnic,p,  strrchr,
  611.          strspn.
  612.             
  613.                Åα¿¼Ñα.
  614.             
  615.                #include <string.h>
  616.             
  617.                char string[100], template[100], *result;
  618.                int numresult;
  619.                .
  620.                .
  621.                .
  622.                /*  ß«ºñáÑΓ ßΓ᫬π "computer program" »«ßαÑñßΓó«¼ ¿ß»«½∞º«-
  623.          óá¡¿∩ strcpy ¿ strcat */
  624.                strcpy(string, "computer");
  625.                result = strcat(string," program");
  626.                /* ¡áσ«ñ¿Γ ßΓ᫬π, ó ¬«Γ«α«⌐ »Ñαóδ⌐ αẠ«í¡áαπªÑ¡« 'a' */
  627.                result = strchr(string,'a');
  628.                /* «»αÑñѽ∩ÑΓ, ∩ó½∩ÑΓß∩ ½¿ ßΓ᫬á í«½∞ΦÑ, ¼Ñ¡∞ΦÑ ¿½¿ αáó¡«⌐
  629.          ñαπú«⌐ */
  630.                numresult = strcmp(string, template);
  631.                /* ßαáó¡¿óáÑΓ ñóÑ ßΓ᫬¿ ó¡Ñ ºáó¿ß¿¼«ßΓ¿ «Γ  Γ¿»á  αÑú¿ßΓαá
  632.          */
  633.                numresult = strcmpi("hello", "HELLO");
  634.                /* ß«ºñáÑΓ ¬«»¿ε ßΓ᫬¿ */
  635.                result = strcpy(template,string);
  636.                /* ¡áσ«ñ¿Γ "a","b","c" ó ßΓα«¬Ñ */
  637.                strcpy(string,"xyzabbc");
  638.                result = strcspn(string,"abc");
  639.                /* ß«ºñáÑΓ ¡«óδ⌐ π¬áºáΓѽ∞ ¡á ßΓ᫬π ñ½∩ ñπí½¿α«óá¡¿∩ ßΓα«-
  640.          ¬¿ */
  641.                result = strdup(string);
  642.             
  643.                STRERROR
  644.             
  645.                #include <string.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  646.                                       Σπ¡¬µ¿¿
  647.                                        
  648.                char *strerror(string);
  649.                char *string;           ß««íΘÑ¡¿Ñ,        »«ßΓáó½∩Ѽ«Ñ
  650.  
  651.                                       - 225 -
  652.          
  653.          
  654.                                        »«½∞º«óáΓѽѼ
  655.             
  656.                int errno;              ßτÑΓτ¿¬ «Φ¿í«¬
  657.                int sys_nerr;           ßτÑΓτ¿¬ ß««íΘÑ¡¿⌐ ß¿ßΓѼδ
  658.                char sys_errlist[sys_nerr];
  659.                                        ¼áßß¿ó ß««íΘÑ¡¿⌐ «í «Φ¿í¬áσ
  660.                   
  661.                Ä»¿ßá¡¿Ñ.
  662.                 
  663.                àß½¿  string αáó¡á NULL, Σπ¡¬µ¿∩ strerror ó«ºóαáΘáÑΓ π¬áºá-
  664.          Γѽ∞ ¡á ßΓ᫬π, ß«ñÑαªáΘπε ß¿ßΓѼ¡«Ñ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ñ½∩ »«ß-
  665.          ½Ññ¡Ñú« í¿í½¿«ΓÑτ¡«ú« ó맮óá, ó ¬«Γ«α«¼  óδαáí«Γá¡á  «Φ¿í¬á;  φΓá
  666.          ßΓα«¬á «¬á¡τ¿óáÑΓß∩ ß¿¼ó«½«¼ ¡«ó«⌐ ßΓ᫬¿ ('\n').
  667.                àß½¿ string ¡Ñ αáó¡á NULL, strerror ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
  668.          ßΓ᫬π,  ß«ñÑαªáΘπε ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ, »«ßΓáó½∩Ѽ«Ñ »«½∞º«óáΓÑ-
  669.          ½Ñ¼; ñó«ÑΓ«τ¿Ñ; »α«íѽ; ß¿ßΓѼ¡«Ñ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ñ½∩ »«ß½Ññ-
  670.          ¡Ñú« í¿í½¿«ΓÑτ¡«ú« ó맮óá, óδαáí«ΓáóΦÑú« «Φ¿í¬π; ¿  ß¿¼ó«½  ¡«ó«⌐
  671.          ßΓ᫬¿ ('\n'). æ««íΘÑ¡¿Ñ »«½∞º«óáΓѽ∩ ¼«ªÑΓ ¿¼ÑΓ∞ ¼á¬ß¿¼á½∞¡πε ñ½¿-
  672.          ¡π ñ« 94 íá⌐Γá.
  673.                é  «Γ½¿τ¿¿  «Γ perror, strerror ¡Ñ »ÑτáΓáÑΓ ¡¿¬á¬¿σ ß««íΘÑ-
  674.          ¡¿⌐. ä½∩ »ÑτáΓ¿ ß««íΘÑ¡¿∩,  ó«ºαáΘáѼ«ú«  strerror  ó  stderr,  ó
  675.          »α«úαἼѠñ«½ªÑ¡ íδΓ∞ «»ÑαáΓ«α printf, ¡á»α¿¼Ñα:
  676.                if((access("datafile",2))++-1)
  677.                 printf(strerror(NULL));
  678.             
  679.                ì«¼Ñα «Φ¿í¬¿ σαá¡¿Γß∩ ó »ÑαѼѡ¡«⌐ errno, ¬«Γ«αá∩ «íΩ∩ó½Ñ¡á
  680.          ¡á  ó¡ÑΦ¡Ñ¼ πα«ó¡Ñ. æ¿ßΓѼ¡δÑ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ ñ«ßΓπ»¡δ τÑαѺ
  681.          »ÑαѼѡ¡πε sys_errlist, ¬«Γ«αá∩ ∩ó½∩ÑΓß∩ ¼áß߿󫼠 ß««íΘÑ¡¿⌐  ñ½∩
  682.          «Φ¿í«¬  ¿º  ßτÑΓτ¿¬á  «Φ¿í«¬. Å« Σπ¡¬µ¿¿ strerror »«ßαÑñßΓó«¼ ¿ß-
  683.          »«½∞º«óá¡¿∩ º¡áτÑ¡¿∩ errno ¬á¬ ¿¡ñѬßá ¬ sys_errlist ¼«ª¡«  πßΓá-
  684.          ¡«ó¿Γ∞  »α¿í½¿º¿Γѽ∞¡δÑ ß««íΘÑ¡¿∩ «í «Φ¿í¬áσ. ç¡áτÑ¡¿Ñ »ÑαѼѡ¡«⌐
  685.          sys_nerr «»αÑñѽ∩ÑΓß∩ ¬á¬ ¼á¬ß¿¼á½∞¡«Ñ τ¿ß½« φ½Ñ¼Ñ¡Γ«ó ó  ¼áßß¿óÑ
  686.          sys_errlist.
  687.                ùΓ«íδ  óδαáí«ΓáΓ∞  »αáó¿½∞¡δ⌐  αѺπ½∞ΓáΓ,  Σπ¡¬µ¿∩ strerror
  688.          ñ«½ª¡á íδΓ∞ óδºóá¡á ßαáºπ »«ß½Ñ í¿í½¿«ΓÑτ¡«⌐ »α«µÑñπαδ, ó«ºóαáΘá-
  689.          εΘÑ⌐ «Φ¿í¬π. ê¡áτÑ º¡áτÑ¡¿Ñ errno  ¼«ªÑΓ  íδΓ∞  »ÑαѺỿßá¡«  ñ½∩
  690.          »«ß½ÑñπεΘ¿σ ó맮ó«ó.
  691.             
  692.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  693.                 
  694.                öπ¡¬µ¿∩ strerror ¡Ñ ó«ºóαáΘáÑΓ ¡¿¬á¬«ú« º¡áτÑ¡¿∩.
  695.                æ¼. ΓᬪѠclearerr, ferror, perror.
  696.       
  697.             
  698.                çá¼Ñτá¡¿Ñ. é MS DOS ¡Ñ¬«Γ«αδÑ º¡áτÑ¡¿∩ errno, »α¿óÑñÑ¡¡δÑ ó
  699.          <errno.h>,  ¡Ñ ¿ß»«½∞ºπεΓß∩. æ¼. »α¿½«ªÑ¡¿Ñ Ç "æ««íΘÑ¡¿∩ «í «Φ¿í-
  700.          ¬áσ", úñÑ »α¿óÑñÑ¡ ß»¿ß«¬ º¡áτÑ¡¿⌐ errno ¿ ß««ΓóÑΓßΓóπεΘ¿Ñ  ß««í-
  701.          ΘÑ¡¿∩  «í «Φ¿í¬áσ, ¬«Γ«αδÑ »α¿¼Ñ¡∩εΓß∩ ó MS DOS . ä½∩ ½εí«ú« º¡á-
  702.          τÑ¡¿∩ errno, ¡Ñ ¿ß»«½∞ºπѼ«ú« ó MS DOS, Σπ¡¬µ¿∩ strerror »ÑτáΓáÑΓ
  703.          »πßΓπε ßΓ᫬π.
  704.             
  705.                Åα¿¼Ñα.
  706.           
  707.                #include <fcntl.h>
  708.                #include <sys\types.h>
  709.  
  710.                                       - 226 -
  711.          
  712.          
  713.                #include <sys\stat.h>
  714.                #include <io.h>
  715.                #include <stdlib.h>
  716.             
  717.                int fh1, fh2;
  718.             
  719.                fh1 = open("data1", O_RDONLY);
  720.                if (fh1==-1)
  721.                    strerror("open failed on input file");
  722.             
  723.                fh2 = open("data2", O_WRONLY : O_CREAT,
  724.                               S_IREAD : S_IWRITE);
  725.                if (fh2==-1)
  726.                    srterror("open failed on output file");
  727.             
  728.                STRLEN
  729.             
  730.                #include <string.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  731.                                       Σπ¡¬µ¿¿
  732.             
  733.                int strlen(string);
  734.                char *string;          ßΓ᫬á, ºá¬á¡τ¿óáεΘá∩ß∩ ¡π½Ñóδ¼
  735.                                       ß¿¼ó«½«¼
  736.             
  737.                Ä»¿ßá¡¿Ñ.
  738.             
  739.                öπ¡¬µ¿∩ strlen ó«ºóαáΘáÑΓ ó  íá⌐Γáσ  ñ½¿¡π  ßΓ᫬¿  string,
  740.          »α¿τѼ ¡π½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ ('\0') ó ñ½¿¡π ¡Ñ ºáßτ¿ΓδóáÑΓß∩.
  741.            
  742.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  743.             
  744.                öπ¡¬µ¿∩  ó«ºóαáΘáÑΓ  ñ½¿¡π string. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó
  745.          ß½πτáÑ ó«ºóαáΓá ¡ÑΓ.
  746.             
  747.                Åα¿¼Ñα.
  748.             
  749.                #include <string.h>
  750.            
  751.                char *string="some space";
  752.                int result;
  753.                .
  754.                .
  755.                .
  756.                /* «»αÑñѽ∩ÑΓ ñ½¿¡π ßΓ᫬¿ */
  757.                result=strlen(string);  /* result = 10 */
  758.             
  759.             
  760.                STRLWR
  761.             
  762.                #include <string.h>    ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  763.                                       Σπ¡¬µ¿¿
  764.  
  765.                char strlwr(string);
  766.                char *string;          »αÑ«íαáºπѼá∩ ßΓ᫬á
  767.             
  768.  
  769.                                       - 227 -
  770.          
  771.          
  772.                Ä»¿ßá¡¿Ñ.
  773.             
  774.                öπ¡¬µ¿∩ strlwr »αÑ«íαẫóδóáÑΓ ½εíδÑ íπ¬óδ óÑασ¡Ñú« αÑú¿ßΓ-
  775.          αá ¿º ºáñá¡¡«⌐ ßΓ᫬¿ string, ºá¬á¡τ¿óáεΘÑ⌐ß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼, ó
  776.          íπ¬óδ ¡¿ª¡Ñú« αÑú¿ßΓαá. äαπú¿Ñ ß¿¼ó«½δ ¡Ñ αáßß¼áΓα¿óáεΓß∩.
  777.             
  778.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  779.             
  780.                öπ¡¬µ¿∩ strlwr ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »αÑ«íαáºπѼπε ßΓ᫬π
  781.          string. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  782.                æ¼. ΓᬪѠstrupr.
  783.             
  784.                Åα¿¼Ñα.
  785.             
  786.                #include <string.h>
  787.             
  788.                char string[100], *copy;
  789.                .
  790.                .
  791.                .
  792.                /* ß«ºñáÑΓ ¬«»¿ε ßΓ᫬¿ ó ß¿¼ó«½áσ ¡¿ª¡Ñú« αÑú¿ßΓαá */
  793.             
  794.                copy=strlwr(strdup(string));
  795.             
  796.       
  797.             
  798.                STRNCAT-STRNSET
  799.       
  800.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  801.                                       Σπ¡¬µ¿¿
  802.                                   
  803.                char *strncat(string1,string2,n);
  804.                                       ñ«íáó½∩ÑΓ n ß¿¼ó«½«ó  string2 ¬
  805.                                       string1
  806.                char *string1;         ßΓ᫬á-»α¿Ñ¼¡¿¬
  807.                char *string2;         ßΓ᫬á-¿ßΓ«τ¡¿¬
  808.                unsigned int n;        ¬«½¿τÑßΓó« ñ«íáó½∩Ѽδσ ß¿¼ó«½«ó
  809.             
  810.                char *strncmp(string1,string2,n);
  811.                                       ßαáó¡¿óáÑΓ  »ÑαóδÑ  n  ß¿¼ó«½«ó
  812.                                       ßΓ᫬
  813.                char *string1;
  814.                char string2;
  815.                unsigned int n;        ¬«½¿τÑßΓó«  ßαáó¡¿óáѼδσ ß¿¼ó«-
  816.                                       ½«ó
  817.             
  818.                int strnicmp(string1,string2,n);
  819.                                       ßαáó¡¿óáÑΓ  »ÑαóδÑ  n  ß¿¼ó«½«ó
  820.                                       ßΓ᫬¿
  821.             
  822.                char *string1;
  823.                char string2;
  824.                unsigned int n;        ¬«½¿τÑßΓó« ßαáó¡¿óáѼδσ  ß¿¼ó«-
  825.                                       ½«ó
  826.             
  827.  
  828.                                       - 228 -
  829.          
  830.          
  831.             
  832.                char *strncpy(string1,string2,n);
  833.                                       ¬«»¿απÑΓ n ß¿¼ó«½«ó  string2  ó
  834.                                       string1
  835.                char *string1;         ßΓ᫬á-»α¿Ñ¼¡¿¬
  836.                char *string2;         ßΓ᫬á-¿ßΓ«τ¡¿¬
  837.                unsigned int n;        ¬«½¿τÑßΓó« ñ«íáó½∩Ѽδσ ß¿¼ó«½«ó
  838.             
  839.                char *strnset(string,c,n,);
  840.                                       ¿¡¿µ¿á½¿º¿απÑΓ  n »Ñαóδσ ß¿¼ó«-
  841.                                       ½«ó ßΓ᫬¿ string
  842.                char *string;          ¿¡¿µ¿á½¿º¿απѼá∩ ßΓ᫬á
  843.                int c;                 ß¿¼ó«½-»α¿Ñ¼¡¿¬
  844.                unsigned int n;        ¬«½¿τÑßΓó« »α¿¡¿¼áѼδσ ß¿¼ó«½«ó
  845.             
  846.       
  847.                Ä»¿ßá¡¿Ñ.
  848.             
  849.                öπ¡¬µ¿¿ strncat, strnsmp, stricmp, strncpy, strnset αáí«Γá-
  850.          εΓ ß »Ñαó묨 n ß¿¼ó«½á¼¿ ßΓ᫬, «¬á¡τ¿óáεΘ¿¼¿ß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼.
  851.                öπ¡¬µ¿∩  strncat ñ«íáó½∩ÑΓ n »Ñαóδσ ß¿¼ó«½«ó ßΓ᫬¿ string2
  852.          ¬ ßΓα«¬Ñ string1, ºá¬á¡τ¿óáÑΓ αѺπ½∞Γ¿απεΘπε ßΓ᫬π ¡π½Ñóδ¼  ß¿¼-
  853.          ó«½«¼ ('\0') ¿ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π-»α¿Ñ¼¡¿¬ (string1).
  854.          àß½¿ n í«½∞ΦÑ, τѼ ñ½¿¡á ßΓ᫬¿ string2, Γ«úñá ó¼ÑßΓ« n ¿ß»«½∞ºπ-
  855.          ÑΓß∩ ñ½¿¡á ßΓ᫬¿.
  856.                öπ¡¬µ¿∩ strncmp ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ ßαáó¡¿óáÑΓ »ÑαóδÑ n  ß¿¼-
  857.          ó«½«ó ßΓ᫬ string1 ¿ string2 ¿ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, ¬«Γ«α«Ñ π¬á-
  858.          ºδóáÑΓ ¡á «Γ¡«ΦÑ¡¿Ñ ¼Ñªñπ »«ñßΓα«¬á¼¿, ¬á¬ »α¿óÑñÑ¡« ¡¿ªÑ:
  859.             
  860.                ç¡áτÑ¡¿Ñ                 àú« ß¼δß½
  861.             
  862.                ¼Ñ¡∞ΦÑ 0           substring 1 ¼Ñ¡∞ΦÑ substring 2
  863.                 
  864.                0                  substring 1 αáó¡á substring 2
  865.                 
  866.                í«½∞ΦÑ 0           substring 1 í«½∞ΦÑ substring 2
  867.             
  868.                öπ¡¬µ¿∩  stricmp ∩ó½∩ÑΓß∩ »α¿τ¿¡¡«-¡ÑτπóßΓó¿Γѽ∞¡«⌐ óÑαß¿Ñ⌐
  869.          strncmp; Σπ¡¬µ¿∩ stricmp ßαáó¡¿óáÑΓ ñóÑ ßΓ᫬¿ string1 ¿  string2
  870.          ó¡Ñ  ºáó¿ß¿¼«ßΓ¿ «Γ τπóßΓó¿Γѽ∞¡«ßΓ¿ ¬ αÑú¿ßΓαá¼; φΓ« «í«º¡áτáÑΓ,
  871.          τΓ« Σ«α¼δ íπ¬ó óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó  αáßß¼áΓα¿óáεΓß∩  ¬á¬
  872.          φ¬ó¿óá½Ñ¡Γ¡δÑ.
  873.                öπ¡¬µ¿∩  strncpy ¬«»¿απÑΓ Γ«τ¡« n ß¿¼ó«½«ó ßΓ᫬¿ string2 ¬
  874.          ßΓα«¬Ñ string1 ¿ ó«ºóαáΘáÑΓ string1. àß½¿  n  ¼Ñ¡∞ΦÑ,  τѼ  ñ½¿¡á
  875.          string2, ¡π½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ ('\0') áóΓ«¼áΓ¿τÑ߬¿ ¡Ñ ñ«íáó½∩-
  876.          ÑΓß∩ ¬ ¬«»¿απѼ«⌐ ßΓ᫬Ñ. àß½¿ n í«½∞ΦÑ, τѼ ñ½¿¡á  string2,  αÑ-
  877.          ºπ½∞ΓáΓ  string1 ºá»«½¡∩ÑΓß∩ ¡π½Ñó묨 ß¿¼ó«½á¼¿, ó»½«Γ∞ ñ« ñ«ßΓ¿-
  878.          ªÑ¡¿∩ ñ½¿¡δ n.
  879.                öπ¡¬µ¿∩ strnset πßΓá¡áó½¿óáÑΓ »ÑαóδÑ n  ß¿¼ó«½«ó  string  ó
  880.          ß¿¼ó«½  c  ¿  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á ¿º¼Ñ¡Ñ¡¡πε ßΓ᫬π. àß½¿ n
  881.          í«½∞ΦÑ, τѼ ñ½¿¡á ßΓ᫬¿  string,  ó¼ÑßΓ«  n  ¿ß»«½∞ºπÑΓß∩  ñ½¿¡á
  882.          string.
  883.                æ¼. ΓᬪѠ strcat, strcmp, strcpy, strset.
  884.             
  885.  
  886.                                       - 229 -
  887.          
  888.          
  889.                Åα¿¼Ñα.
  890.             
  891.                #include <string.h>
  892.             
  893.                char string[30]={"12345678901234567890"};
  894.             
  895.                main()
  896.                {
  897.                char copy[100], suffix[100], *result;
  898.                int numresult;
  899.                unsigned int nresult;
  900.                .
  901.                .
  902.                .
  903.                /*  ¬«¼í¿¡¿απÑΓ  ßΓ᫬π  ß« ßΓ᫬«⌐ suffix, ¡Ñ í«½ÑÑ τѼ 10
  904.          ß¿¼ó«½«ó (30 ¼¿¡πß ñ½¿¡á ¡áτá½∞¡«⌐ ßΓ᫬¿). (àß½¿ ó  »α¿¼ÑαÑ  ¿ß-
  905.          »«½∞ºπÑΓß∩  í«½ÑÑ 10 ß¿¼ó«½«ó, ó »á¼∩Γ∞ íπñÑΓ ºá»¿ßá¡« ½εí«Ñ ñαπ-
  906.          ú«Ñ º¡áτÑ¡¿Ñ) */
  907.              
  908.                result = strncat(string,suffix,10);
  909.             
  910.                /* «»αÑñѽ∩ÑΓ »«α∩ñ«¬ ß½«ó ó ßΓ᫬Ñ, ¬«Γ«αá∩  ß«ñÑনΓß∩  ó
  911.          "program",  ¡« αáßß¼áΓα¿óáÑΓ ¡Ñ í«½ÑÑ 7 ß¿¼ó«½«ó. àß½¿ ßΓ᫬á ß«-
  912.          ñÑαª¿Γ »αÑΣ¿¬ß "program", strncmp ó«ºóαáΘáÑΓ 0 */
  913.             
  914.                strcpy(string,"programmer");
  915.                numresult = strncmp(string,"program",7);
  916.             
  917.                /* ßαáó¡¿óáÑΓ 4 ß¿¼ó«½á ñóπσ ßΓ᫬ ó¡Ñ ºáó¿ß¿¼«ßΓ¿ «Γ  Γ¿»á
  918.          αÑú¿ßΓαá */
  919.             
  920.                strcpy(string,"PROGRESS");
  921.                nresult = stricmp(string,"program",4);
  922.             
  923.                /* ¬«»¿απÑΓ 99 ß¿¼ó«½«ó ßΓ᫬¿ */
  924.             
  925.                result = strncpy(copy,string,99);
  926.             
  927.                /* πßΓá¡áó½¿óáÑΓ »ÑαóδÑ 4 ß¿¼ó«½á ßΓ᫬¿ ó ß¿¼ó«½ 'x' */
  928.             
  929.                result = strnset("computer",'x',4);
  930.                }
  931.             
  932.             
  933.                STRPBRK
  934.             
  935.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  936.                                       Σπ¡¬µ¿¿
  937.             
  938.                char *strpbrk(string1,string2);
  939.                                       ¡áσ«ñ¿Γ ½εí«⌐ ß¿¼ó«½ ¿º string2
  940.                                       ó string1
  941.                char *string1;         ßΓ᫬á-¿ßΓ«τ¡¿¬
  942.                char *string2;         ¼¡«ªÑßΓó« ß¿¼ó«½«ó
  943.               
  944.  
  945.                                       - 230 -
  946.          
  947.          
  948.                Ä»¿ßá¡¿Ñ.
  949.             
  950.                öπ¡¬µ¿∩  strpbrk  ¡áσ«ñ¿Γ »Ñαó«Ñ óσ«ªñÑ¡¿Ñ ó string1 ½εí«ú«
  951.          ß¿¼ó«½á ¿º string2. ìπ½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ »α¿ »«¿ß¬Ñ ¡Ñ  αáßß-
  952.          ¼áΓα¿óáÑΓß∩.
  953.             
  954.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  955.             
  956.                öπ¡¬µ¿∩  strpbrk  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞ ¡á »Ñαó«Ñ óσ«ªñÑ¡¿Ñ
  957.          ß¿¼ó«½á ¿º string2 ó string1.
  958.                NULL-π¬áºáΓѽ∞  «»αÑñѽ∩ÑΓ  «ΓßπΓßΓó¿Ñ  «íΘ¿σ  ß¿¼ó«½«ó   ó
  959.          string1 ¿ ó string2.
  960.                æ¼. ΓᬪѠstrchr, strrchr.
  961.             
  962.                Åα¿¼Ñα.
  963.             
  964.                #include <string.h>
  965.             
  966.                char string[10], *result;
  967.                .
  968.                .
  969.                .
  970.                /*  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞ ¡á »Ñαó«Ñ óσ«ªñÑ¡¿Ñ ó ßΓα«¬Ñ ½¿í«
  971.          'a,' ½¿í« 'b' */
  972.             
  973.                result = strpbrk(string,"ab");
  974.                
  975.                STRRCHR
  976.             
  977.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  978.                                       Σπ¡¬µ¿¿
  979.             
  980.                char *strrchr(string,c);
  981.                                       ¡áσ«ñ¿Γ »«ß½Ññ¡ÑÑ óσ«ªñÑ¡¿Ñ c ó
  982.                                       string
  983.                char *string;          ßΓ᫬á-¿ßΓ«τ¡¿¬
  984.                int c;                 ß¿¼ó«½ »«¿ß¬á
  985.             
  986.                Ä»¿ßá¡¿Ñ.
  987.             
  988.                öπ¡¬µ¿∩ strrchr ¡áσ«ñ¿Γ »«ß½Ññ¡ÑÑ  óσ«ªñÑ¡¿Ñ  ß¿¼ó«½á  c  ó
  989.          ßΓα«¬Ñ  string. ìπ½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ ('\0') ßΓ᫬¿ string ó¬½ε-
  990.          τáÑΓß∩ ó »«¿ß¬. (êß»«½∞ºπÑΓß∩ strchr ñ½∩ »«¿ß¬á »Ñαó«ú« óσ«ªñÑ¡¿∩
  991.          c ó ßΓα«¬Ñ string).
  992.             
  993.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  994.             
  995.                öπ¡¬µ¿∩ strrchr ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »«ß½Ññ¡ÑÑ óσ«ªñÑ¡¿Ñ
  996.          c ó string. ô¬áºáΓѽ∞ NULL ó«ºóαáΘáÑΓß∩, Ñß½¿ ºáñá¡¡δ⌐ ß¿¼ó«½  ¡Ñ
  997.          ¡á⌐ñÑ¡.
  998.                æ¼. ΓᬪѠstrchr, strpbrk.
  999.             
  1000.                Åα¿¼Ñα.
  1001.             
  1002.                #include <string.h>
  1003.             
  1004.  
  1005.                                       - 231 -
  1006.          
  1007.          
  1008.                char string[100], *result;
  1009.                .
  1010.                .
  1011.                .
  1012.                /* ¡áσ«ñ¿Γ »«ß½Ññ¡ÑÑ óσ«ªñÑ¡¿Ñ ß¿¼ó«½á 'a' ó ßΓα«¬Ñ */
  1013.                result = strrchr(string,'a');.
  1014.  
  1015.                STRREV
  1016.             
  1017.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1018.                                       Σπ¡¬µ¿¿
  1019.            
  1020.                char *strrev(string);
  1021.                char *string;          ß«σαá¡∩Ѽá∩ ßΓ᫬á
  1022.             
  1023.                Ä»¿ßá¡¿Ñ.
  1024.             
  1025.                öπ¡¬µ¿∩ strrev ß«σαá¡∩ÑΓ »«α∩ñ«¬ ß¿¼ó«½«ó ó ºáñá¡¡«⌐ ßΓ᫬Ñ
  1026.          string. ìπ½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ ('\0') «ßΓáÑΓß∩ ¡á ¼ÑßΓÑ.
  1027.             
  1028.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1029.             
  1030.                öπ¡¬µ¿∩  strrev  ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ¿º¼Ñ¡Ñ¡¡πε string.
  1031.          é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  1032.                æ¼. ΓᬪѠstrcpy, strset.
  1033.             
  1034.                Åα¿¼Ñα.
  1035.             
  1036.                #include <string.h>
  1037.             
  1038.                char string[100];
  1039.                int result;
  1040.                .
  1041.                .
  1042.                .
  1043.                /* «»αÑñѽ∩ÑΓ, ∩ó½∩ÑΓß∩ ½¿ ßΓα«¬á »á½¿¡ñα«¼«¼, Γ.Ñ. τ¿ΓáÑΓ-
  1044.          ß∩ «ñ¿¡á¬«ó« ó »α∩¼«¼ ¿ «íαáΓ¡«¼ »«α∩ñ¬Ñ */
  1045.                result = strcmp(string,strrev(strdup(string)));
  1046.                /* Ñß½¿ result == 0, ßΓ᫬á ∩ó½∩ÑΓß∩ »á½¿¡ñα«¼«¼ */
  1047.             
  1048.             
  1049.                STRSET
  1050.             
  1051.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1052.                                       Σπ¡¬µ¿¿
  1053.             
  1054.                char *strset(string,c);
  1055.                char *string;          πßΓá¡áó½¿óáѼá∩ ßΓ᫬á
  1056.                int c;                 ß¿¼ó«½-»α¿Ñ¼¡¿¬
  1057.             
  1058.             
  1059.                Ä»¿ßá¡¿Ñ.
  1060.            
  1061.                öπ¡¬µ¿∩ strset πßΓá¡áó½¿óáÑΓ ó c óßÑ  ß¿¼ó«½δ  ¿º  ºáñá¡¡«⌐
  1062.          ßΓ᫬¿ string, ¿ß¬½ετá∩ ¡π½Ñó«⌐ ß¿¼ó«½ «¬«¡τá¡¿∩ ('\0').
  1063.  
  1064.                                       - 232 -
  1065.          
  1066.          
  1067.             
  1068.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1069.             
  1070.                öπ¡¬µ¿∩  strset  ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ¿º¼Ñ¡Ñ¡¡πε ßΓ᫬π.
  1071.          é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1072.                æ¼. ΓᬪѠstrnset.
  1073.             
  1074.                Åα¿¼Ñα.
  1075.             
  1076.                #include <string.h>
  1077.             
  1078.                char string[100], *result;
  1079.                .
  1080.                .
  1081.                .
  1082.                /* πßΓá¡áó½¿óáÑΓ ßΓ᫬π, ß«ßΓ«∩Θπε ¿º »α«íѽ«ó */
  1083.                result = strset(string, ' ');
  1084.             
  1085.             
  1086.                STRSPN
  1087.             
  1088.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1089.                                       Σπ¡¬µ¿¿
  1090.             
  1091.                int strspn(string1,string2);
  1092.                char *string1;         »«¿ß¬«óá∩ ßΓ᫬á
  1093.                char *string2;         ¼¡«ªÑßΓó« ß¿¼ó«½«ó
  1094.             
  1095.                Ä»¿ßá¡¿Ñ.
  1096.             
  1097.                öπ¡¬µ¿∩ strspn ó«ºóαáΘáÑΓ ¿¡ñѬߠ»Ñαó«ú« ß¿¼ó«½á  ó  ßΓ᫬Ñ
  1098.          string1,  ¬«Γ«αδ⌐  ¡Ñ »α¿¡áñ½Ñª¿Γ ¼¡«ªÑßΓóπ ß¿¼ó«½«ó string2. ¥Γ«
  1099.          º¡áτÑ¡¿Ñ φ¬ó¿óá½Ñ¡Γ¡« ñ½¿¡Ñ ¡áτá½∞¡«⌐ »«ñßΓ᫬¿ ó ßΓα«¬Ñ string1,
  1100.          ¬«Γ«αá∩ »«½¡«ßΓ∞ε ß«ßΓ«¿Γ ¿º  ß¿¼ó«½«ó  ßΓ᫬¿  string2.  ìπ½Ñó«⌐
  1101.          ß¿¼ó«½  «¬«¡τá¡¿∩ ßΓ᫬¿ string2 ¡Ñ αáßß¼áΓα¿óáÑΓß∩. àß½¿ string1
  1102.          ¡áτ¿¡áÑΓß∩ ß ß¿¼ó«½á, ¡Ñ óσ«ñ∩ΘÑú« ó string2,  strcpn  ó«ºóαáΘáÑΓ
  1103.          0.
  1104.             
  1105.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1106.             
  1107.                öπ¡¬µ¿∩  strspn ó«ºóαáΘáÑΓ µÑ½«Ñ º¡áτÑ¡¿Ñ, «»αÑñѽ∩εΘÑÑ »«-
  1108.          º¿µ¿ε »Ñαó«ú« ß¿¼ó«½á ó string1, ¿ ¡Ñ ß«ñÑαªáΘÑú«ß∩ ó string2.
  1109.                æ¼. ΓᬪѠstrcspn.
  1110.             
  1111.                Åα¿¼Ñα.
  1112.             
  1113.                #include <string.h>
  1114.             
  1115.                char *string="cabbadge";
  1116.                int result;
  1117.                .
  1118.                .
  1119.                .
  1120.                /* «»αÑñѽ∩ÑΓ ñ½¿¡π »αÑΣ¿¬ßá, ß«ñÑαªáΘÑú« a,b ¿ c */
  1121.                result = strspn(string,"abc"); /* result = 5 */
  1122.  
  1123.                                       - 233 -
  1124.          
  1125.          
  1126.             
  1127.                STRSTR
  1128.             
  1129.             
  1130.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1131.                                       Σπ¡¬µ¿¿
  1132.             
  1133.                char *strstr(srting1,string2);
  1134.                char *string1;         »«¿ß¬«óá∩ ßΓ᫬á
  1135.                char *string2;         ßΓ᫬á-Φáí½«¡
  1136.             
  1137.                Ä»¿ßá¡¿Ñ.
  1138.             
  1139.                öπ¡¬µ¿∩ strstr ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á  »Ñαó«Ñ  óσ«ªñÑ¡¿Ñ
  1140.          string1 ó string2.
  1141.             
  1142.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1143.             
  1144.                öπ¡¬µ¿∩   strstr  ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á  string1,  Ñß½¿
  1145.          string1 «í¡áαπªÑ¡á, ¿ NULL - Ñß½¿ string1 ¡ÑΓ.
  1146.                æ¼. ΓᬪѠstrcspn.
  1147.             
  1148.                Åα¿¼Ñα.
  1149.             
  1150.                #include <string.h>
  1151.             
  1152.                main()
  1153.                  {
  1154.                  char *string1="needle in a haystack";
  1155.                  char *string2="hay";
  1156.                                            
  1157.                  printf("%s\n", strstr(string1,string2));
  1158.                  }
  1159.             
  1160.                ìá óδσ«ñÑ:
  1161.                haystack
  1162.             
  1163.                STRTOD-STRTOL
  1164.                  
  1165.                 #include <stdlib.h>
  1166.                 
  1167.                 double strtod(nptr, endptr);  »αÑ«íαáºπÑΓ  ßΓ᫬π,
  1168.                                               ¡á ¬«Γ«απε π¬áºδóáÑΓ
  1169.                                               nptr, ó double
  1170.                                         
  1171.                 char *nptr;                   π¬áºáΓѽ∞  ¡á ßΓ᫬π
  1172.                 char **endptr;                π¬áºáΓѽ∞  ¡á  ¬«¡Ñµ
  1173.                                               »α«ß¼«Γαá
  1174.                 
  1175.                 long strol(nptr,endptr,base); »αÑ«íαáºπÑΓ ßΓ᫬π ó
  1176.                                               long  ñÑß∩Γ¿τ¡«Ñ µÑ-
  1177.                                               ½«Ñ,   φ¬ó¿óá½Ñ¡Γ¡«Ñ
  1178.                                               τ¿ß½π ß ñá¡¡δ¼ «ß¡«-
  1179.                                               ó᡿Ѽ base
  1180.                 char *nptr;
  1181.  
  1182.                                       - 234 -
  1183.          
  1184.          
  1185.                 char **endptr;
  1186.                 int  base;                    ¿ß»«½∞ºπѼ«Ñ «ß¡«óá-
  1187.                                               ¡¿Ñ
  1188.                 
  1189.                 
  1190.                Ä»¿ßá¡¿Ñ.
  1191.                 
  1192.                öπ¡¬µ¿¿ strtod ¿ strtol ß««ΓóÑΓßΓóÑ¡¡« »αÑ«íαáºπεΓ ß¿¼ó«½∞-
  1193.          ¡πε ßΓ᫬𠬠º¡áτÑ¡¿ε ß ñó«⌐¡«⌐ Γ«τ¡«ßΓ∞ε ¿½¿ ¬  ñ½¿¡¡«¼π  µÑ½«¼π
  1194.          º¡áτÑ¡¿ε.  êßσ«ñ¡á∩  ßΓα«¬á  string »αÑñßΓáó½∩ÑΓ ß«í«⌐ »«ß½Ññ«óá-
  1195.          Γѽ∞¡«ßΓ∞ ß¿¼ó«½«ó, ¬«Γ«αδÑ ¿¡ΓÑα»αÑΓ¿απεΓß∩ ¬á¬ τ¿ß½«ó«Ñ  º¡áτÑ-
  1196.          ¡¿Ñ  ß»Ñµ¿á½∞¡«ú«  Γ¿»á. ¥Γ¿ Σπ¡¬µ¿¿ »αѬαáΘáεΓ τΓÑ¡¿Ñ ßΓ᫬¿ ¬á¬
  1197.          Γ«½∞¬« óßΓαÑΓ¿Γß∩ ß¿¼ó«½, ¬«Γ«αδ⌐ ¡Ñ ¼«ªÑΓ íδΓ∞ τáßΓ∞ε τ¿ß½á (φΓ«
  1198.          ¼«ªÑΓ íδΓ∞ ¡π½Ñó«⌐ ß¿¼ó«½ '\0 ó ¬«¡µÑ ßΓ᫬¿); ñ½∩ strtol ß¿¼ó«½«¼
  1199.          »αÑαδóá¡¿∩ ¼«ªÑΓ íδΓ∞ ΓᬪѠ»Ñαóδ⌐ µ¿Σα«ó«⌐ ß¿¼ó«½, ¬«Γ«αδ⌐ í«½∞-
  1200.          ΦÑ ¿½¿ αáóÑ¡ base. àß½¿ endptr - ¡Ñ NULL,  *endptr  π¬áºδóáÑΓ  ¡á
  1201.          Γ«Γ ß¿¼ó«½, ¡á ¬«Γ«α«¼ «ßΓá¡áó½¿óáÑΓß∩ »α«ß¼«Γα.
  1202.                öπ¡¬µ¿∩  strtod »αÑñ»«½áúáÑΓ, τΓ« nptr π¬áºδóáÑΓ ¡á ßΓ᫬π,
  1203.          ¿¼ÑεΘπε ß½ÑñπεΘπε Σ«α¼π:
  1204.                 
  1205.          [whitespace][sign][digiits][.digits][{d:D:e:E}[sign]digits]
  1206.                 
  1207.                Åα¿ »«∩ó½Ñ¡¿¿ »Ñαó«ú« ß¿¼ó«½á, ¡Ñ «ΓóÑτáεΘÑú«  φΓ«⌐  Σ«α¼Ñ,
  1208.          «íαáí«Γ¬á »αѬαáΘáÑΓß∩.
  1209.                öπ¡¬µ¿∩  strtol  »αÑñ»«½áúáÑΓ, τΓ« nptr π¬áºδóáÑΓ ¡á ßΓ᫬π
  1210.          ß½ÑñπεΘÑ⌐ ßΓαπ¬Γπαδ:
  1211.                 
  1212.                [whitespace][sign][0][x][digits]
  1213.                 
  1214.                àß½¿ base ½Ñª¿Γ ¼Ñªñπ 2 ¿ 36, φΓ« º¡áτÑ¡¿Ñ ¿ß»«½∞ºπÑΓß∩ ¬á¬
  1215.          «ß¡«óá¡¿Ñ ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ ñá¡¡«ú« τ¿ß½á.
  1216.                àß½¿ base = 0, ¡áτá½∞¡δÑ ß¿¼ó«½δ ßΓ᫬¿, ¡á ¬«Γ«αδÑ  π¬áºδ-
  1217.          óáÑΓ  nptr,  ¿ß»«½∞ºπεΓß∩  ñ½∩ «»αÑñѽѡ¿∩ «ß¡«óá¡¿∩. àß½¿ »Ñαóδ⌐
  1218.          ß¿¼ó«½ - 0 ¿ óΓ«α«⌐ - «ñ¡á ¿º µ¿Σα «Γ 1 ñ« 7, Γ« ßΓα«¬á ¿¡ΓÑα»αÑ-
  1219.          Γ¿απÑΓß∩ ¬á¬ ó«ß∞¼Ñα¿τ¡«Ñ µÑ½«Ñ; Ñß½¿ »Ñαóδ⌐ ß¿¼ó«½ 0, á óΓ«α«⌐ x
  1220.          ¿½¿ X, Γ«úñá ßΓα«¬á »«¡¿¼áÑΓß∩ ¬á¬ ΦÑßΓ¡áñµáΓÑα¿τ¡«Ñ µÑ½«Ñ;  Ñß½¿
  1221.          »Ñαóδ⌐ ß¿¼ó«½ »α¿¡áñ½Ñª¿Γ »«ß½Ññ«óáΓѽ∞¡«ßΓ¿ 1-9, Γ« ßΓα«¬á »«¡¿-
  1222.          ¼áÑΓß∩ ¬á¬ ñÑß∩Γ¿τ¡«Ñ µÑ½«Ñ.
  1223.                 
  1224.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1225.                 
  1226.                öπ¡¬µ¿∩  strtod  ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ-
  1227.          ¬«⌐, ¿ß¬½ετá∩ ß½πτá¿ »ÑαÑ»«½¡Ñ¡¿∩ ¿½¿ »«ΓÑα¿ αѺπ½∞ΓáΓá (Γ.Ñ. áí-
  1228.          ß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ αѺπ½∞ΓáΓᠼѡ∞ΦÑ, τѼ φΓ« ñ«»πßΓ¿¼« ñ¿á»áº«¡«¼
  1229.          »αÑñßΓáó½Ñ¡¿∩ τ¿ß½á). é ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩ ¿½¿ »«ΓÑα¿ º¡áτ¿¼«ßΓ¿
  1230.          αѺπ½∞ΓáΓá ó«ºóαáΘáÑΓß∩ ß««ΓóÑΓßΓóÑ¡¡« +HUGE ¿½¿ -HUGE.
  1231.                öπ¡¬µ¿∩ strtol ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ »αÑ«íαẫóá¡¡«⌐  ßΓ᫬¿,
  1232.          ¿ß¬½ετá∩ ß½πτá⌐ »ÑαÑ»«½¡Ñ¡¿∩ ¿½¿ »«ΓÑα¿ αѺπ½∞ΓáΓá. é φΓ«¼ ß½πτáÑ
  1233.          ó«ºóαáΘáÑΓß∩  ß««ΓóÑΓßΓóÑ¡¡«  LONG_MAX  ¿½¿ LONG_MIN. ÄíÑ Σπ¡¬µ¿¿
  1234.          πßΓá¡áó½¿óáεΓ errno ó ERANGE.
  1235.                æ¼. ΓᬪѠatof, atol.
  1236.                 
  1237.                Åα¿¼Ñα.
  1238.                 
  1239.                 #include <stdlib.h>
  1240.  
  1241.                                       - 235 -
  1242.          
  1243.          
  1244.                 
  1245.                 main()
  1246.                  {
  1247.                  char *string, *stopstring;
  1248.                  double x;
  1249.                  long l;
  1250.                  int bs;
  1251.              
  1252.                  string="3.1415926This stopped it";
  1253.                  x=strtod (string, &stopstring);
  1254.                  printf ("string=%s\n",string);
  1255.                  printf (    strtod=%ld (base %d)\n", l, bs);
  1256.                  printf ("   Stopped scan at %s\n\n", stopstring);
  1257.                  string="10110134932";
  1258.                  printf ("string=%s\n", string);
  1259.                  for (bs=2; bs<=8; bs*=2)  {
  1260.                  l=strtol(string, &stopstring, bs);
  1261.                  printf (" strtol=%ld (base %d)\n",l,bs);
  1262.                  printf (" Stopped scan at %s\n\n",stopstring);
  1263.                   }
  1264.                 }
  1265.  
  1266.                ìá óδσ«ñÑ:
  1267.             
  1268.                string = 3.1415926This stopped it
  1269.                  strtod = 3.141593
  1270.                  Stopped scan at This stopped it
  1271.             
  1272.                string = 10110134932
  1273.                  strtol = 45 (base 2)
  1274.            
  1275.             
  1276.                  Stopped scan at 34932
  1277.       
  1278.                  strtol = 4423 (base 4)
  1279.                  Stopped scan at 4932
  1280.             
  1281.                  strtol = 2134108 (base 8)
  1282.                  Stopped scan at 932
  1283.             
  1284.                STRTOK
  1285.             
  1286.                #include<string.h>    ΓαÑíπÑΓß∩  Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1287.                                      Σπ¡¬µ¿¿
  1288.             
  1289.                char *strtor(string1,string2);
  1290.                                      ¡áσ«ñ¿Γ ß¿¼ó«½ ó string1
  1291.                char *string1;        ßΓ᫬á, ß«ñÑαªáΘá∩ ß¿¼ó«½δ
  1292.                char *string2;        ¼¡«ªÑßΓó« ß¿¼ó«½«ó-«úαá¡¿τ¿ΓѽÑ⌐
  1293.             
  1294.                Ä»¿ßá¡¿Ñ.
  1295.             
  1296.                öπ¡¬µ¿∩ strtok τ¿ΓáÑΓ ßΓ᫬π string1 ¬á¬ ¼¡«ªÑßΓó« ¡π½∞ ¿½¿
  1297.          í«½ÑÑ º¡á¬«ó, ß½πªáΘ¿σ ó ¬áτÑßΓóÑ «úαá¡¿τ¿ΓѽÑ⌐  ñ½∩  ß¿¼ó«½«ó  ó
  1298.          string1. æ¿¼ó«½δ ó string1 ¼«úπΓ «Γñѽ∩Γ∞ß∩ «ñ¡¿¼ ¿½¿ í«½ÑÑ «úαá-
  1299.  
  1300.                                       - 236 -
  1301.          
  1302.          
  1303.          ¡¿τ¿ΓѽѼ  «Γ string2. æ¿¼ó«½δ ó string1 αáºαδóáεΓß∩ ßΓ«½∞¬« αáº,
  1304.          ß¬«½∞¬« óδºδóáÑΓß∩ strtok. Åα¿ »Ñαó«¼ ó맮óÑ strtok ñ½∩  ºáñá¡¡«⌐
  1305.          ßΓ᫬¿ string1, strtok ¡áσ«ñ¿Γ »Ñαóδ⌐ ß¿¼ó«½ ó string1, »α«»π߬á∩
  1306.          »αÑñδñπΘ¿Ñ  «úαá¡¿τ¿Γѽ¿.  ô¬áºáΓѽ∞ ó«ºóαáΘáÑΓß∩ ¡á »Ñαóδ⌐ º¡á¬.
  1307.          ä½∩ Γ«ú«, τΓ«íδ »α«τ¿ΓáΓ∞ ß½ÑñπεΘ¿⌐ ß¿¼ó«½  ¿º  string1,  Σπ¡¬µ¿∩
  1308.          strtok  óδºδóáÑΓß∩ ó¼ÑßΓÑ ß NULL º¡áτÑ¡¿Ñ¼ ñ½∩ áαúπ¼Ñ¡Γá string1.
  1309.          Çαúπ¼Ñ¡Γ NULL ßΓ᫬¿ string1 óδºδóáÑΓ strtok ñ½∩ »«¿ß¬á ß½ÑñπεΘÑ-
  1310.          ú« º¡á¬á ó »αÑñδñπΘÑ⌐ ßΓα«¬Ñ  ß¿¼ó«½«ó.  î¡«ªÑßΓó«  «úαá¡¿τ¿ΓѽÑ⌐
  1311.          ¼«ªÑΓ  íδΓ∞  αẽ¿τ¡δ¼  «Γ ó맮óá ¬ ó맮óπ, Γᬠ¬á¬ string2 ¼«ªÑΓ
  1312.          »α¿¡¿¼áΓ∞ ½εíδÑ º¡áτÑ¡¿∩.
  1313.                çá¼Ñτá¡¿Ñ. String1 ¼«ª¡«  ¼«ñ¿Σ¿µ¿α«óáΓ∞  ó맮óἿ  strtok,
  1314.          Γᬠ ¬á¬ »«ß½Ñ ó맮óá strtok ó string1 óßΓáó½∩ÑΓß∩ ¡π½Ñó«Ñ º¡áτÑ-
  1315.          ¡¿Ñ ('\0').
  1316.             
  1317.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1318.             
  1319.                Åα¿ ó맮óÑ strtok »Ñαóδ⌐ αáº, «¡á ó«ºóαáΘáÑΓ  π¬áºáΓѽ∞  ¡á
  1320.          »Ñαóδ⌐  ß¿¼ó«½ ó string1. Åα¿ »«ß½ÑñπεΘ¿σ ó맮óáσ ó φΓ«⌐ ªÑ ßἫ⌐
  1321.          ßΓα«¬Ñ ß¿¼ó«½«ó, strtok ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ß½ÑñπεΘ¿⌐  ß¿¼ó«½
  1322.          ó ßΓ᫬Ñ. ô¬áºáΓѽ∞ NULL ó«ºóαáΘáÑΓß∩, ¬«úñá ¡ÑΓ í«½∞ΦÑ ß¿¼ó«½«ó.
  1323.          éßÑ ß¿¼ó«½δ «¬á¡τ¿óáεΓß∩ ¡π½Ñ¼.
  1324.                æ¼. ΓᬪѠstrcspn, strspn.
  1325.             
  1326.                Åα¿¼Ñα.
  1327.             
  1328.                #include <string.h>
  1329.                #include <stdio.h>
  1330.             
  1331.                char *string = "a string, of , ,tokens";
  1332.                .
  1333.                .
  1334.                .
  1335.                /*  ó ß½ÑñπεΘѼ µ¿¬½Ñ ß«í¿αáεΓß∩ ß¿¼ó«½δ («Γñѽѡ¡δÑ »α«íÑ-
  1336.          ½á¼¿ ¿½¿ ºá»∩Γ묨) ¿º ßΓ᫬¿ ñ« ΓÑσ »«α, »«¬á ó ¡Ñ⌐ ¡¿τÑú« ¡Ñ «ß-
  1337.          Γá¡ÑΓß∩ */
  1338.                token = strtok(string,",");
  1339.             
  1340.                while  (token  !=NULL)   {
  1341.                /* óßΓáó½∩ÑΓ ¬«ñ ñ½∩ «íαáí«Γ¬¿ ß¿¼ó«½á ó µ¿¬½Ñ */
  1342.                       .
  1343.                       .
  1344.                       .
  1345.                token = strtok(NULL,",");
  1346.                /* íÑαÑΓ ß½ÑñπεΘ¿⌐ ß¿¼ó«½ */
  1347.                     }
  1348.             
  1349.                /* ó«ºóαáΘáÑ¼δ¼¿  ß¿¼ó«½á¼¿  ∩ó½∩εΓß∩  "a","string",  "of",
  1350.          "tokens". æ½ÑñπεΘ¿⌐ ó맮ó strtok ó«ºóαáΓ¿Γ NULL ¿ µ¿¬½ ºáóÑαΦáÑΓ-
  1351.          ß∩ */
  1352.             
  1353.             
  1354.                STRUPR
  1355.             
  1356.                #include<string.h>     ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
  1357.                                       Σπ¡¬µ¿¿
  1358.  
  1359.                                       - 237 -
  1360.          
  1361.          
  1362.             
  1363.                char *strupr(string);
  1364.                char *string;          ßΓ᫬á,       »αÑ«íαáºπѼá∩   ¬
  1365.                                       óÑασ¡Ñ¼π  αÑú¿ßΓαπ
  1366.             
  1367.                Ä»¿ßá¡¿Ñ.
  1368.             
  1369.                öπ¡¬µ¿∩  strupr »αÑ«íαáºπÑΓ ½εíδÑ íπ¬óδ ¡¿ª¡Ñú« αÑú¿ßΓαá ¿º
  1370.          ºáñá¡¡«⌐ string ¬ íπ¬óá¼ óÑασ¡Ñú«  αÑú¿ßΓαá.  äαπú¿Ñ  ß¿¼ó«½δ  ¡Ñ
  1371.          αáßß¼áΓα¿óáεΓß∩.
  1372.             
  1373.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1374.             
  1375.                öπ¡¬µ¿∩ strupr ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »αÑ«íαáºπѼπε ßΓ᫬π
  1376.          string. é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
  1377.                æ¼. ΓᬪѠstrlwr.
  1378.             
  1379.                Åα¿¼Ñα.
  1380.             
  1381.                #include<string.h>
  1382.                                 
  1383.                char string[100], *copy;
  1384.                .
  1385.                .
  1386.                .
  1387.                /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ñѽáÑΓ ¬«»¿ε ßΓ᫬¿ ó óÑασ¡Ñ¼ αÑú¿ßΓ-
  1388.          αÑ */
  1389.                copy = strupr(strdup(string));
  1390.  
  1391.                
  1392.                SWAB
  1393.             
  1394.             #include <stdlib.h>             ΓαÑíπÑΓß∩  Γ«½∞¬«  ñ½∩
  1395.                                             «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
  1396.             
  1397.             void swab(source, destination, n);
  1398.             char *source;                   ¬«»¿απѼδÑ ¿ »ÑαÑßΓáó-
  1399.                                             ½∩ѼδÑ  («í¼Ñ¡¿óáѼδÑ)
  1400.                                             ñá¡¡δÑ
  1401.             char *destination;              σαá¡Ñ¡¿Ñ  »ÑαÑßΓáó½Ñ¡-
  1402.                                             ¡δσ ñá¡¡δσ
  1403.             int n;                          τ¿ß½«       ¬«»¿απѼδσ
  1404.                                             íá⌐Γ«ó
  1405.             
  1406.                Ä»¿ßá¡¿Ñ.
  1407.             
  1408.                öπ¡¬µ¿∩ swab ¬«»¿απÑΓ n íá⌐Γ«ó ¿º source, »ÑαÑßΓáó½∩ÑΓ («í-
  1409.          ¼Ñ¡¿óáÑΓ)  ¬áªñπε  »áαπ  ß¼Ñª¡δσ  íá⌐Γ«ó  ¿  σαá¡¿Γ  αѺπ½∞ΓáΓ  ó
  1410.          destination. ûѽδÑ n ¼«úπΓ íδΓ∞ «ñ¿¡á¬«ó묨 τ¿ß½á¼¿,  »«ñ½ÑªáΘ¿¼¿
  1411.          »ÑαÑßΓá¡«ó¬Ñ («í¼Ñ¡π).
  1412.                öπ¡¬µ¿∩  swab  «íδτ¡«  ¿ß»«½∞ºπÑΓß∩ ñ½∩ »«ñú«Γ«ó¬¿ ñó«¿τ¡δσ
  1413.          ñá¡¡δσ »α¿ »ÑαÑßδ½¬Ñ ¿σ ¬ óδτ¿ß½¿Γѽ∞¡«⌐ ¼áΦ¿¡Ñ, ¬«Γ«αá∩  ¿ß»«½∞-
  1414.          ºπÑΓ αẽ¿τ¡δ⌐ »«α∩ñ«¬ íá⌐Γ«ó.
  1415.             
  1416.                é«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
  1417.             
  1418.                é«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
  1419.                æ¼. ΓᬪѠfgets, fputs.
  1420.  
  1421.  
  1422.