home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-05-17 | 87.9 KB | 2,175 lines |
- - 137 -
-
-
-
- INP
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int inp(port);
- unsigned port; ¡«¼Ñα »«αΓá
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ inp τ¿ΓáÑΓ 1 íá⌐Γ ¿º »«αΓá óó«ñá, «»αÑñѽѡ¡«ú« »«
- port. Çαúπ¼Ñ¡Γ port ¼«ªÑΓ íδΓ∞ ½εíδ¼ íѺº¡á¬«óδ¼ µÑ½δ¼ τ¿ß½«¼ ó
- »αÑñѽáσ «Γ 0 ñ« 65535.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ inp ó«ºóαáΘáÑΓ »α«τ¿Γá¡¡δ⌐ íá⌐Γ ¿º port. 髺óαáΘáÑ-
- ¼«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- 漫Γα¿ Γá¬ªÑ output.
-
-
- Åα¿¼Ñα:
-
- #include <conio.h>
- unsigned port;
- char result;
- .
- .
- .
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óó«ñ¿Γ ëà íá⌐Γ ¿º »«αΓá, ¡á ¬«Γ«αδ⌐
- πßΓá¡«ó½Ñ¡ port */
-
- result=inp(port);
- INT86
- #include <dos.h>
- int int86(intno,inregs,outregs);
- int ntno; ¡«¼Ñα (τ¿ß½«) »αÑαδóá¡¿∩ º¡á-
- union REGS *inregs; τÑ¡¿∩ αÑú¿ßΓα«ó »α¿ ó맮óÑ
- union REGS *outregs; º¡áτÑ¡¿∩ αÑú¿ßΓα«ó »α¿ ó«º-
- óαáΓÑ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ int86 óδ»«½¡∩ÑΓ »αÑαδóá¡¿Ñ 8086 »α«úαá¼¼¡«ú« «íÑß-
- »ÑτÑ¡¿∩, ¬«Γ«α«Ñ «»αÑñѽѡ« ¡«¼Ñα«¼ »αÑαδóá¡¿∩ intno. ÅÑαÑñ óδ-
- »«½¡Ñ¡¿Ñ¼ »αÑαδóá¡¿∩ int86 ¬«»¿απÑΓ ß«ñÑন¼«Ñ inregs ó ß««ΓóÑΓß-
- ΓóπεΘ¿Ñ αÑú¿ßΓαδ. Å«ß½Ñ ó«ºóαáΓá »αÑαδóá¡¿∩ Σπ¡¬µ¿∩ ¬«»¿απÑΓ º¡á-
- τÑ¡¿Ñ ΓѬπΘÑú« αÑú¿ßΓαá ó outregs. Ä¡á Γá¬ªÑ ¬«»¿απÑΓ ßΓáΓπß »Ñ-
- αÑ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ cflag, ß«ñÑαªáΘÑÑß∩ ó outregs.
- Çαúπ¼Ñ¡Γδ inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS. Æ¿»
- «íΩÑñ¿¡Ñ¡¿∩ «íΩ∩ó½Ñ¡ ó include-Σá⌐½Ñ <dos.h>. êß»«½∞º«óá¡¿Ñ Σπ¡¬-
- µ¿¿ int86 »αÑñ¡áº¡áτÑ¡« ñ½∩ ó맮ó«ó »αÑαδóá¡¿⌐ DOS.
-
-
-
- - 138 -
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáÑ¼δ¼ º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ º¡áτÑ¡¿Ñ ó αÑú¿ßΓαÑ AX »«ß-
- ½Ñ ó«ºóαáΓá »αÑαδóá¡¿∩. àß½¿ »«½Ñ cflag ó outregs ¡Ñ¡π½Ñó«Ñ, ó«º-
- ¡¿¬áÑΓ «Φ¿í¬á ¿ »ÑαѼѡ¡á∩ _doserrno Γá¬ªÑ πßΓá¡áó½¿óáÑΓ ß««ΓóÑΓ-
- ßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
- 漫Γα¿ Γá¬ªÑ bdos, intdos, intdosx, int86x.
-
- Åα¿¼Ñα:
-
- #include <signal.h>
- #include <dos.h>
- #include <stdio.h>
- #include <process.h>
-
- /* »αÑαδóá¡¿Ñ ¡«¼Ñα 0σ23, »«ñσóáΓδóáѼ«Ñ »α«µÑñπα«⌐ «íαá-
- í«Γ¬¿ »αÑαδóá¡¿⌐ int_handler. çá¼Ñτá¡¿Ñ: ç¡áτÑ¡¿∩ ó ßΓαπ¬ΓπαÑ
- regs ¡Ñ ¿¼ÑεΓ ß¼δß½á ñ½∩ φΓ«ú« »αÑαδóá¡¿∩. */
-
- #define CNTRL_C 0x23
- int int_handler(int);
- union REGS regs;
- .
- .
- .
- signal (SIGINT, int_handler);
- .
- .
- .
- int86 (CNTRL_C, ®s, ®s);
-
-
- INT86X
-
- #include <dos.h>
- int int86x(intno,inregs,outregs,segregs);
- int intno; ¡«¼Ñα (τ¿ß½«) »αÑαδóá¡¿⌐
- union REGS *inregs; º¡áτÑ¡¿Ñ αÑú¿ßΓα«ó »α¿
- ó맮óÑ
- union REGS *outregs; º¡áτÑ¡¿Ñ αÑú¿ßΓα«ó »α¿
- ó«ºóαáΓÑ
- struct SREGS *segregs; º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γ«ó »α¿
- ó맮óÑ
-
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ int86x óδ»«½¡∩ÑΓ »αÑαδóá¡¿Ñ 8086 »α«úαá¼¼¡«ú« «íÑß-
- »ÑτÑ¡¿∩, ¬«Γ«α«Ñ «»αÑñѽѡ« ¡«¼Ñα«¼ »αÑαδóá¡¿∩ intno. é «Γ½¿τ¿Ñ
- «Γ Σπ¡¬µ¿¿ int86, Σπ¡¬µ¿∩ int86x »α¿¡¿¼áÑΓ º¡áτÑ¡¿∩ αÑú¿ßΓαá ßÑú-
- ¼Ñ¡Γá ó segregs, »«ºó«½∩∩ »α«úαá¼¼á¼, ¿ß»«½∞ºπεΘ¿¼ ßÑú¼Ñ¡Γδ ñá¡-
- ¡δσ í«½∞Φ«⌐ ¼«ñѽ¿ ¿½¿ far-π¬áºáΓѽ¿, «»αÑñѽ∩Γ∞, ¬á¬«⌐ ßÑú¼Ñ¡Γ
- ¿½¿ π¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ ¿ß»«½∞º«óá¡ ó »α«µÑßßÑ ß¿ßΓѼ¡«ú« ó맮-
- óá. ÅÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ «»αÑñѽѡ¡«ú« »αÑαδóá¡¿∩ int86x ¬«»¿απÑΓ
- ß«ñÑন¼«Ñ inregs ¿ segregs ó ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. é segregs
- ¿ß»«½∞ºπεΓß∩ Γ«½∞¬« º¡áτÑ¡¿∩ αÑú¿ßΓα«ó DS ¿ ES. Å«ß½Ñ ó«ºóαáΓá
-
- - 139 -
-
-
- »αÑαδóá¡¿⌐ Σπ¡¬µ¿∩ ¬«»¿απÑΓ º¡áτÑ¡¿∩ ΓѬπΘÑú« αÑú¿ßΓαá ó outregs
- ¿ »ÑαѺỿßδóáÑΓ DS. Ä¡á Γá¬ªÑ ¬«»¿απÑΓ ß«ßΓ«∩¡¿Ñ (ßΓáΓπß) »ÑαÑ-
- ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ cflag, ß«ñÑαªáΘÑÑß∩ ó outregs. Çα-
- úπ¼Ñ¡Γδ inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS. Çαúπ-
- ¼Ñ¡Γ segregs ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα«⌐ Γ¿»á SREGS. ¥Γ¿ Γ¿»δ «íΩ∩ó½Ñ¡δ ó
- include-Σá⌐½Ñ <dos.h>. êß»«½∞º«óá¡¿Ñ Σπ¡¬µ¿¿ int86x »αÑñ¡áº¡áτÑ¡«
- ñ½∩ »α∩¼«ú« ó맮óá »αÑαδóá¡¿⌐ DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γ ó αÑ-
- ú¿ßΓαÑ ES ¿½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DS, ¬«Γ«α«Ñ «Γ½¿τáÑΓß∩ «Γ π¼á½-
- τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáÑ¼δ¼ º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ º¡áτÑ¡¿Ñ ó αÑú¿ßΓαÑ AX »«ß-
- ½Ñ ó«ºóαáΘÑ¡¿∩ »αÑαδóá¡¿⌐. àß½¿ »«½Ñ flag ó outregs ∩ó½∩ÑΓß∩ ¡Ñ-
- ¡π½Ñóδ¼, 󫺡¿¬áÑΓ «Φ¿í¬á ¿ »ÑαѼѡ¡á∩ _doserrno Γá¬ªÑ πßΓá¡áó½¿-
- óáÑΓ ß««ΓóÑΓßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
- æ¼.Γá¬ªÑ bdos, intdos, intdosx, int86, segread, FP_SEG.
-
- çá¼Ñτá¡¿Ñ! ç¡áτÑ¡¿∩ ßÑú¼Ñ¡Γá ñ½∩ áαúπ¼Ñ¡Γá segreg ¼«úπΓ
- íδΓ∞ »«½πτÑ¡δ ½¿í« »α¿ ¿ß»«½∞º«óá¡¿¿ Σπ¡¬µ¿¿ segread, ½¿í« ¼á¬α«
- FP_SEG.
-
- Åα¿¼Ñα:
-
- #include <signal.h>
- #include <dos.h>
- #include <stdio.h>
- #include <process.h>
-
- /* »α«µÑñπαá int86x ¿ß»«½∞ºπÑΓß∩ ñ½∩ úÑ¡Ñα¿α«óá¡¿∩ »αÑαδóá-
- ¡¿∩ 0σ21 (ß¿ßΓѼ¡δ⌐ ó맮ó), ¬«Γ«αδ⌐, ó ßó«ε «τÑαÑñ∞, á¬Γ¿ó¿º¿απÑΓ
- ß¿ßΓѼ¡δ⌐ ó맮ó "꺼ѡѡ¿Ñ áΓα¿íπΓ«ó" DOS. çñÑß∞ ¿ß»«½∞ºπÑΓß∩
- »α«µÑñπαá int86x, »«ß¬«½∞¬π ßßδ½¬á ¡á ¿¼∩ Σá⌐½á ¼«ªÑΓ ¡áσ«ñ¿Γ∞ß∩
- ó ßÑú¼Ñ¡ΓÑ, «Γ½¿τ¡«¼ «Γ π¼á½τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ (ßßδ½¬á »α¿
- »«¼«Θ¿ far-π¬áºáΓѽ∩), »«φΓ«¼π αÑú¿ßΓα DS ¼«ªÑΓ íδΓ∞ Γ«τ¡« πßΓá-
- ¡«ó½Ñ¡ ß« ßΓαπ¬Γπα«⌐ SREGS. */
-
- #define SYSCALL 0x21
- /* INT 21H óδºδóáÑΓ ß¿ßΓѼ¡δÑ ó맮óδ */
- #define CHANGE_ATTR 0x43
- /* ß¿ßΓѼ¡δ⌐ ó맮ó 43H - ¿º¼Ñ¡Ñ¡¿∩ áΓα¿íπΓ«ó */
- char far *filename;
- /* ¿¼∩ Σá⌐½á ó far-ßÑú¼Ñ¡ΓÑ ñá¡¡δσ */
- union REGS inregs, outregs;
- struct SREGS segregs;
- int result;
- .
- .
- .
- inregs.h.ah=CHANGE_ATTR;
- /* AH - ¡«¼Ñα (τ¿ß½«) ß¿ßΓѼ¡«ú« ó맮óá */
- inregs.h.al=0;
- /* AL - Σπ¡¬µ¿∩ ó맮óá áΓα¿íπΓ«ó */
- inregs.x.dx=FP_OFF(filename);
- /* DS:DX π¬áºδóáεΓ ¡á ¿¼∩ Σá⌐½á */
-
- - 140 -
-
-
- segregs.ds=FP_SEG(filename);
- result=int86x(SYSCALL,&inregs,&outregs,&segregs);
- if (outregs.x.cflag) {
- printf("can't get attributes of file; error
- number %d\n", result);
- exit(1);
- }
- else {
- printf("Attribs=%#x\n", outregs.x.cx);
- }
-
- INTDOS
-
-
- #include <dos.h>
- int intdos(inregs, outregs);
- union REGS *inregs; º¡áτÑ¡¿∩ αÑú¿ßΓα«ó »α¿
- ó맮óÑ
- union REGS *outregs; º¡áτÑ¡¿∩ αÑú¿ßΓα«ó »α¿
- ó«ºóαáΓÑ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ intdos «ßπΘÑßΓó½∩ÑΓ óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« ó맮óá MS
- DOS, ¬«Γ«αδ⌐ «»αÑñѽѡ º¡áτÑ¡¿Ñ¼ αÑú¿ßΓα«ó, «íΩ∩ó½Ñ¡¡δσ ó inregs,
- ¿ ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ ß¿ßΓѼ¡«ú« ó맮óá ó outregs. Çαúπ¼Ñ¡Γδ
- inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿ Γ¿»á REGS. Æ¿» «íΩÑñ¿¡Ñ-
- ¡¿∩ «íΩ∩ó½Ñ¡ ó include-Σá⌐½Ñ <dos.h>.
- ä½∩ «ßπΘÑßΓó½Ñ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá intdos óδ»«½¡∩ÑΓ ¬«¼á¡-
- ñπ INT 21H. ÅÑαÑñ óδ»«½¡Ñ¡¿Ñ¼ ¬«¼á¡ñδ Σπ¡¬µ¿∩ ¬«»¿απÑΓ ß«ñÑন¼«Ñ
- inregs ó ß««ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. Å«ß½Ñ ó«ºóαáΓá ¬«¼á¡ñδ INT,
- intdos ¬«»¿απÑΓ º¡áτÑ¡¿Ñ ΓѬπΘÑú« αÑú¿ßΓαá ó outregs. Ä¡á ΓᬪÑ
- ¬«»¿απÑΓ ßΓáΓπß »ÑαÑ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ cflag, αẼÑ-
- ΘÑ¡¡«Ñ ó outregs. àß½¿ φΓ« »«½Ñ ∩ó½∩ÑΓß∩ ¡Ñ¡π½Ñóδ¼, Σ½áú πßΓá¡áó-
- ½¿óáÑΓß∩ ß¿ßΓѼ¡δ¼ óδº«ó«¼ ¿ π¬áºδóáÑΓ ¡á πß½«ó¿Ñ «Φ¿í¬¿.
- öπ¡¬µ¿∩ intdos ¿ß»«½∞ºπÑΓß∩ ñ½∩ óδ»«½¡Ñ¡¿∩ ß¿ßΓѼ¡δσ ó맮-
- ó«ó DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γδ ó αÑú¿ßΓαáσ, «Γ½¿τ¡δσ «Γ DX
- (DH/DL) ¿ AL, ¿½¿ ñ½∩ ß¿ßΓѼ¡δσ ó맮ó«ó, ¬«Γ«αδÑ «»αÑñѽ∩εΓ «Φ¿í-
- ¬¿ »«ßαÑñßΓó«¼ »ÑαÑ¡«ß¿¼«ú« Σ½áúá.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ intdos ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX »«ß½Ñ ºáóÑα-
- ΦÑ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá. àß½¿ »«½Ñ cflag ó outregs ∩ó½∩ÑΓß∩ ¡Ñ¡π-
- ½Ñóδ¼, 󫺡¿¬áÑΓ «Φ¿í¬á ¿ _doserrno πßΓá¡áó½¿óáÑΓ ß««ΓóÑΓßΓóπε-
- Θ¿⌐ ¬«ñ «Φ¿í¬¿.
- æ¼.Γá¬ªÑ bdos, intdosx.
-
- Åα¿¼Ñα:
-
-
- #include <dos.h>
- #include <stdio.h>
- union REGS inregs, outregs;
- .
-
- - 141 -
-
-
- .
- .
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óδí¿αáεΓ ΓѬπΘπε ñáΓπ, ¿ß»«½∞ºπ∩
- ΦÑßΓ¡áñµáΓÑα¿τ¡δ⌐ ó맮ó Σπ¡¬µ¿¿ DOS 2a */
- inregs.h.ah=0x2a;
- intdos(&inregs,&outregs);
- printf("date is %d/%d/%d\n", outregs.h.dh,
- outregs.h.dl, outregs.x.cx);
-
-
- INTDOSX
-
- #include <dos.h>
- int intdosx(intno,inregs,outregs,segregs);
- union REGS *inregs; º¡áτÑ¡¿Ñ αÑú¿ßΓα«ó »α¿
- ó맮óÑ
- union REGS *outregs; º¡áτÑ¡¿Ñ αÑú¿ßΓα«ó »α¿
- ó«ºóαáΓÑ
- struct SREGS *segregs; º¡áτÑ¡¿Ñ ßÑú¼Ñ¡Γ«ó »α¿
- ó맮óÑ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ intdosx «ßπΘÑßΓó½∩ÑΓ óδ»«½¡Ñ¡¿Ñ ß¿ßΓѼ¡«ú« ó맮óá
- DOS, ¬«Γ«αδ⌐ «»αÑñѽѡ º¡áτÑ¡¿Ñ¼ αÑú¿ßΓαá, «íΩ∩ó½Ñ¡¡δ¼ ó inregs,
- ¿ ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ ß¿ßΓѼ¡«ú« ó맮óá ó outregs. é «Γ½¿τ¿¿ «Γ
- Σπ¡¬µ¿¿ intdos, Σπ¡¬µ¿∩ intdosx »α¿¡¿¼áÑΓ º¡áτÑ¡¿∩ αÑú¿ßΓα«ó ßÑú-
- ¼Ñ¡Γá ó segregs, »«ºó«½∩∩ »α«úαá¼¼á¼, ¬«Γ«αδÑ ¿ß»«½∞ºπεΓ ßÑú¼Ñ¡Γδ
- ñá¡¡δσ í«½∞Φ«⌐ ¼«ñѽ¿ ¿½¿ far-π¬áºáΓѽ¿, «»αÑñѽ¿Γ∞, ¬á¬«⌐ ßÑú-
- ¼Ñ¡Γ ¿½¿ π¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ ¿ß»«½∞º«óá¡ ¡á »α«Γ∩ªÑ¡¿¿ ß¿ßΓѼ-
- ¡«ú« ó맮óá. Çαúπ¼Ñ¡Γδ inregs ¿ outregs ∩ó½∩εΓß∩ «íΩÑñ¿¡Ñ¡¿∩¼¿
- Γ¿»á REGS.Çαúπ¼Ñ¡Γ segregs ∩ó½∩ÑΓß∩ ßΓαπ¬Γπα«⌐ Γ¿»á SREGS. ¥Γ¿
- Γ¿»δ «íΩ∩ó½Ñ¡δ ó include-Σá⌐½Ñ <dos.h>. ä½∩ á¬Γ¿ó¿ºáµ¿¿ ß¿ßΓѼ¡«-
- ú« ó맮óá Σπ¡¬µ¿∩ intdosx óδ»«½¡∩ÑΓ ¬«¼á¡ñπ INT 21H. ÅÑαÑñ óδ»«½-
- ¡Ñ¡¿Ñ¼ ¬«¼á¡ñδ Σπ¡¬µ¿∩ ¬«»¿απÑΓ ß«ñÑন¼«Ñ inregs ¿ segregs ó ß«-
- «ΓóÑΓßΓóπεΘ¿Ñ αÑú¿ßΓαδ. é segregs ¿ß»«½∞ºπεΓß∩ Γ«½∞¬« º¡áτÑ¡¿∩
- αÑú¿ßΓα«ó DS ¿ ES. Å«ß½Ñ ó«ºóαáΓá ¬«¼á¡ñδ INT intdosx ¬«»¿απÑΓ
- ΓѬπΘÑÑ º¡áτÑ¡¿Ñ αÑú¿ßΓαá ó outregs ¿ »ÑαѺỿßδóáÑΓ DS.
- Ä¡á Γá¬ªÑ ¬«»¿απÑΓ ßΓáΓπß »ÑαÑ¡«ß¿¼«ú« Σ½áúá ß¿ßΓѼδ ó »«½Ñ
- cflag, αẼÑΘÑ¡¡«Ñ ó outregs. àß½¿ φΓ« »«½Ñ ∩ó½∩ÑΓß∩ ¡Ñ¡π½Ñóδ¼,
- Σ½áú πßΓá¡áó½¿óáÑΓß∩ »«ßαÑñßΓó«¼ ß¿ßΓѼ¡«ú« ó맮óá ¿ π¬áºδóáÑΓ ¡á
- πß½«ó¿Ñ «Φ¿í¬¿.
- Äí½áßΓ∞ ñÑ⌐ßΓó¿∩ Σπ¡¬µ¿¿ intdosx αáßΦ¿α∩ÑΓß∩ ¿ ¡á «í½áßΓ∞
- ñÑ⌐ßΓó¿∩ ß¿ßΓѼ¡δσ ó맮ó«ó DOS, ¬«Γ«αδÑ íÑαπΓ áαúπ¼Ñ¡Γ ó αÑú¿ßΓαÑ
- ES ¿½¿ º¡áτÑ¡¿Ñ αÑú¿ßΓαá DS, «Γ½¿τ¡«Ñ «Γ π¼á½τ¿óáѼ«ú« ßÑú¼Ñ¡Γá
- ñá¡¡δσ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- Å«ß½Ñ ºáóÑαΦÑ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá Σπ¡¬µ¿∩ intdosx ó«ºóαá-
- ΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX. àß½¿ »«½Ñ cflag ó outregs ∩ó½∩ÑΓß∩ ¡Ñ-
- ¡π½Ñóδ¼, 󫺡¿¬áÑΓ «Φ¿í¬á ¿ _doserrno Γá¬ªÑ πßΓá¡áó½¿óáÑΓ ß««Γ-
- óÑΓßΓóπεΘ¿⌐ ¬«ñ «Φ¿í¬¿.
- æ¼.Γá¬ªÑ bdos, intdos, segread, FP_SEG.
-
-
- - 142 -
-
-
- çá¼Ñτá¡¿Ñ! ç¡áτÑ¡¿∩ ßÑú¼Ñ¡Γá ñ½∩ áαúπ¼Ñ¡Γá segreg ¼«úπΓ
- íδΓ∞ »«½πτÑ¡δ ½¿í« »α¿ ¿ß»«½∞º«óá¡¿¿ Σπ¡¬µ¿¿ segread, ½¿í« ¼á¬α«
- FP_SEG.
-
- Åα¿¼Ñα:
-
- #include <dos.h>
- union REGS inregs, outregs;
- struct SREGS segregs;
- char far *dir = "/test/bin";
- /*ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ºá¼Ñ¡∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐
- óδº«ó«¼ ΦÑß¡áñµáΓÑα¿τ¡«⌐ Σπ¡¬µ¿¿ DOS 36 */
- inregs.h.ah=0x3b;
- /* ¿º¼Ñ¡Ñ¡¡δ⌐ ñ¿αÑ¬Γ«α¿⌐ */
- inregs.x.dx=FP_OFF(dir);
- /* ¿¼∩ Σá⌐½á offset*/
- segregs.ds=FP_SEG(dir);
- /* ¿¼∩ Σá⌐½á ßÑú¼Ñ¡Γá */
- intdosx(&inregs,&outregs,&segregs);
-
-
- ISALNUM-ISASCII
-
- #include <ctype.h>
- int isalnum (c); »α«óÑα∩ÑΓ ß¿¼ó«½δ ¡á »α¿-
- ¡áñ½Ñª¡«ßΓ∞ ¬ á½Σáó¿Γ¡«-µ¿Σ-
- α«ó«¼π Γ¿»π (A-Z,a-z,0-9)
- int isalpha(c); »α«óÑα∩ÑΓ ¡á íπ¬óδ (A-Z,a-z)
- int isascii(c); »α«óÑα∩ÑΓ ¡á ß¿¼ó«½δ ¬«ñá
- ASCII (0x00-0x7F)
- int c; »α«óÑα∩Ѽá∩ óѽ¿τ¿¡á
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαδ, «»¿ßá¡¡δÑ ó ctype, »α«óÑα∩εΓ óóÑñÑ¡¡«Ñ µÑ½«Ñ
- º¡áτÑ¡¿Ñ ¿ ó«ºóαáΘáεΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ µÑ½«Ñ πñ«ó½ÑΓó«α∩-
- ÑΓ πß½«ó¿∩¼ »α«óÑન, ¿ ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ φΓ«ú« ¡Ñ »α«¿ßσ«-
- ñ¿Γ. ÅαÑñ»«½áúáÑΓß∩, τΓ« ¡á πßΓá¡«ó½Ñ¡¡«¼ «í«απñ«óá¡¿¿ ¿ß»«½∞ºπ-
- εΓß∩ ¬«ñδ ASCII.
- Åα«µÑñπαá isascii óδñáÑΓ º¡áτÑ¡¿Ñ αѺπ½∞ΓáΓá ñ½∩ óßÑσ µÑ½«-
- τ¿ß½Ñ¡¡δσ º¡áτÑ¡¿⌐. Äñ¡á¬« «ßΓá½∞¡δÑ »α«µÑñπαδ óδñáεΓ «»αÑñѽѡ-
- ¡δ⌐ αѺπ½∞ΓáΓ Γ«½∞¬« ñ½∩ ΓÑσ µÑ½«τ¿ß½Ñ¡¡δσ º¡áτÑ¡¿⌐, ¬«Γ«αδÑ ¼«-
- úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ó ß¿¼ó«½δ ¬«ñá ASCII (τΓ« »α«¿ßσ«ñ¿Γ Γ«½∞-
- ¬« Γ«úñá, ¬«úñá »α«óÑα¬á ß »«¼«Θ∞ε isascii ñáÑΓ »«½«ª¿Γѽ∞¡δ⌐ αÑ-
- ºπ½∞ΓáΓ) ¿½¿ º¡áτÑ¡¿Ñ EOF («»αÑñѽѡ¡«Ñ ó <stdio.h>) ñ½∩ ß¿¼ó«-
- ½«ó, ¡Ñ »α¿¡áñ½ÑªáΘ¿σ ¬ ASCII.
- æ¼.Γá¬ªÑ iscntrl, isdigit, isgraf, islower, isprint,
- ispunct, isspace, isupper, isxdigit, toascii, tolower, toupper.
-
- çá¼Ñτá¡¿Ñ! Åα«µÑñπαδ ctype αÑ὿º«óá¡δ ¬á¬ ¼á¬α«.
-
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
-
- - 143 -
-
-
- #include <ctype.h>
- int ch;
- /*æ½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ á¡á½¿º¿απεΓ óßÑ **ß¿¼ó«½δ ¼Ñªñ𠬫ñá-
- ¼¿ 0σ0 ¿ 0σ7F, *»ÑτáΓáÑΓ "A" ñ½∩ íπ¬ó, "AN" - ñ½∩ íπ¬óÑ¡¡«**µ¿Σ-
- α«óδσ ß¿¼ó«½«ó ¿ "AS" ñ½∩ ß¿¼ó«½«ó **¬«ñá ASCII : */
- for (ch=0;ch<=0x7F;ch++) {
- printf ("%#04x",ch);
- printf ("%3S",isalnnum(ch) ? "AN":" ");
- printf ("%2S",isalpha(ch) ? "A":" ");
- printf ("%3S",isascii(ch) ? "AS":" ");
- putchar ('\n');
-
-
- ISATTY
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int isatty(handle);
- int handle; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á »α«óÑα∩Ѽ«Ñ
- πßΓα«⌐ßΓó«
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ isatty «»αÑñѽ∩ÑΓ, ∩ó½∩ÑΓß∩ ½¿ ñá¡δ⌐ handle-α ßó∩-
- ºá¡¡δ¼ ß ß¿¼ó«½∞¡δ¼ πßΓα«⌐ßΓó«¼ (Γᬿ¼ ¬á¬ ΓÑନ¡á½, ¬«¡ß«½∞,
- »α¿¡ΓÑα ¿½¿ »«ß½Ññ«óáΓѽ∞¡δ⌐ »«αΓ).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ isatty ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ πßΓα«⌐ß-
- Γó« ∩ó½∩ÑΓß∩ ß¿¼ó«½∞¡δ¼. ê¡áτÑ - ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ 0.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- int fh;
- long loc;
- .
- .
- .
- if (isatty(fh)==0)
- /* Ñß½¿ ¡Ñ πßΓα«⌐ßΓó«, Γ« óδñáÑΓ ΓѬπΘπε »«º¿µ¿ε */
- loc=tell(fh);
-
-
- ISCNTRL-ISXDIGIT
-
- #include <ctype.h>
- iscntrl(c); »α«óÑα∩ÑΓ ¡á π»αáó½∩εΘ¿⌐
- ß¿¼ó«½ (0σ00-0σ1f ¿½¿ 0x7F)
- isdigit (c); »α«óÑα∩ÑΓ ¡á µ¿Σαπ (0-9)
- isgraph(c); »α«óÑα∩ÑΓ ¡á »ÑτáΓáѼδÑ ß¿¼ó«-
- ½δ, ¿ß¬½ετá∩ ß¿¼ó«½ »α«íѽá
- (0σ21-0σ7e)
- islower(c); »α«óÑα∩ÑΓ ¡á ßΓα«τ¡δÑ íπ¬óδ
-
- - 144 -
-
-
- (a-z)
- isprint(c); »α«óÑα∩ÑΓ ¡á »ÑτáΓáѼδÑ
- ß¿¼ó«½δ (0x20-0x7e)
- ispunct(c); »α«óÑα∩ÑΓ ¡á º¡á¬¿ »π¡¬Γπᵿ¿
- (¬«úñá »α«óÑન ß »«¼«Θ∞ε
- isalnum(c), iscntrl(c) ¿
- isspace(c) ¿¼ÑεΓ «Γα¿µáΓѽ∞¡δ⌐
- αѺπ½∞ΓáΓ
- isspace(c); »α«óÑα∩ÑΓ ¡á »α«íѽ∞¡δÑ ß¿¼ó«½δ
- (0x09-0x0d ¿½¿ 0x20)
- isupper(c); »α«óÑα∩ÑΓ ¡á »α«»¿ß¡δÑ íπ¬óδ
- (A-Z)
- isxdigit(c); »α«óÑα∩ÑΓ ¡á ΦÑßΓ¡áñµáΓÑα¿τ¡δÑ
- µ¿Σαδ (A-F,a-f, 0-9)
- int c; »α«óÑα∩Ѽ«Ñ µÑ½«Ñ
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαδ ctype, «»¿ßá¡¡δÑ óδΦÑ, »α«óÑα∩εΓ óóÑñÑ¡¡«Ñ µÑ½«Ñ
- º¡áτÑ¡¿Ñ ¿ ó«ºóαáΘáεΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ µÑ½«Ñ πñ«ó½ÑΓó«α∩-
- ÑΓ πß½«ó¿∩¼ »α«óÑન, ¿ 0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ. (êß»«½∞ºπÑΓß∩
- «í«απñ«óá¡¿Ñ ß ß¿¼ó«½á¼¿ ¬«ñá ASCII). ¥Γ¿ »α«µÑñπαδ óδαáíáΓδóáεΓ
- «»αÑñѽѡ¡δ⌐ αѺπ½∞ΓáΓ Γ«½∞¬« ñ½∩ µÑ½δσ º¡áτÑ¡¿⌐, ß««ΓóÑΓßΓóπεΘ¿σ
- ß¿¼ó«½á¼ ¬«ñá ASCII (φΓ« 󫺼«ª¡« Γ«½∞¬« Γ«úñá, ¬«úñá isascii ¿ß-
- Γ¿¡¡á) ¿½¿ º¡áτÑ¡¿Ñ EOF («»αÑñѽѡ¡«Ñ ó <stdio.h>), Ñß½¿ ß¿¼ó«½
- ¡Ñ »α¿¡áñ½Ñª¿Γ ¬ ASCII.
- æ¼.Γá¬ªÑ isalnum, isalpha, isascii, toascii, tolower,
- toupper.
-
- çá¼Ñτá¡¿Ñ! Åα«µÑñπαδ ctype αÑ὿ºπεΓß∩ ¬á¬ ¼á¬α«.
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include <ctype.h>
- int ch;
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ á¡á½¿º¿απεΓ óßÑ
- ** ß¿¼«ó½δ ¼Ñªñ𠬫ñἿ 0σ0 ¿ 0σ7f,
- ** »ÑτáΓá∩ "U" ñ½∩ »α«»¿ß¡δσ íπ¬ó,
- ** "L" - ñ½∩ ßΓα«τ¡δσ, "D" ñ½∩ µ¿Σα,
- ** "X" ñ½∩ ΦÑßΓ¡áñµáΓÑα¿τ¡δσ µ¿Σα,
- ** "S" ñ½∩ »α«íѽ«ó, "PU" ñ½∩ º¡á¬«ó
- ** »π¡¬Γπᵿ¿, "PR" ñ½∩ »ÑτáΓáѼδσ
- ** ß¿¼ó«½«ó, "G" ñ½∩ úαáΣ¿τÑ߬¿σ,
- ** "C" ñ½∩ π»αáó½∩εΘ¿σ.
- ** àß½¿ ¬«ñ ¼«ªÑΓ íδΓ∞ ¡á»ÑτáΓá¡, «¡ »ÑτáΓáÑΓß∩. */
- for (ch=0; ch<=0x7f; ch++)
- { printf ("%2s", iscntrl (ch) ? "C":" ");
- printf ("%2s", isdigit (ch) ? "D":" ");
- printf ("%2s", isgraph (ch) ? "G":" ");
- printf ("%2s", islower (ch) ? "L":" ");
- printf ("%c", isprint (ch) ? ch :'\0');
- printf ("%3s", ispunct (ch) ? "PU":" ");
- printf ("%2s", isspace (ch) ? "S":" ");
- printf ("%3s", isprint (ch) ? "PR":" ");
-
- - 145 -
-
-
- printf ("%2s", isupper (ch) ? "U":" ");
- printf ("%2s", isxdigit (ch) ? "X":" ");
- putchar('\n');
- }
-
-
- ITOA
-
- #include <stdlib.h> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
- char *itoa(value,string,radix);
- int value; »αÑ«íαáºπѼ«Ñ τ¿ß½«
- char *string; ßΓ᫬á αѺπ½∞ΓáΓá
- int radix; «ß¡«óá¡¿Ñ value
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ itoa »αÑ«íαáºπÑΓ ß¿¼ó«½δ τ¿ß½á value ó ß¿¼ó«½∞¡πε
- ßΓ᫬π, ºá¬á¡τ¿óáεΘπεß∩ NULL-ß¿¼ó«½«¼, ¿ ºá»«¼¿¡áÑΓ αѺπ½∞ΓáΓ ó
- string. Çαúπ¼Ñ¡Γ radix «»αÑñѽ∩ÑΓ «ß¡«óá¡¿Ñ ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ ñ½∩
- value; Ñú« º¡áτÑ¡¿Ñ ¼«ªÑΓ ½ÑªáΓ∞ ó »αÑñѽáσ «Γ 2 ñ« 36. àß½¿
- radix = 10 ¿ value - «Γα¿µáΓѽ∞¡«Ñ τ¿ß½«, Γ« »Ñαóδ¼ ß¿¼ó«½«¼ ó
- ßΓα«¬Ñ αѺπ½∞ΓáΓá íπñÑΓ º¡á¬ ¼¿¡πß.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ itoa ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π. 髺óαáΘáѼ«ú«
- º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼.Γá¬ªÑ ltoa, ultoa.
-
- çá¼Ñτá¡¿Ñ! ÉẼÑα »á¼∩Γ¿, «Γó«ñ¿¼«⌐ ñ½∩ string, ñ«½ªÑ¡ íδΓ∞
- í«½∞ΦÑ, τѼ ΓαÑíπÑΓß∩ ñ½∩ ó«ºóαáΘáѼ«⌐ ßΓ᫬¿. öπ¡¬µ¿∩ ¼«ªÑΓ ó«º-
- óαáΘáΓ∞ ßΓ᫬π ñ½¿¡«⌐ ñ« 17 íá⌐Γ«ó.
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
- int radix=8;
- char buffer[20];
- char *p;
- p=itoa(-3445,buffer,radix); /*p="1712113"*/
-
-
- KBHIT
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int kbhit();
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ kbhit »α«óÑα∩ÑΓ ¡áªáΓ¿Ñ ¬½áó¿Φ¿ ¡á ¬«¡ß«½¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
-
- - 146 -
-
-
- öπ¡¬µ¿∩ kbhit ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, Ñß½¿ ¬½áó¿Φá
- ¡áªáΓá. é »α«Γ¿ó¡«¼ ß½πτáÑ ó«ºóαáΘáÑΓß∩ 0.
-
- Åα¿¼Ñα:
-
- #include <conio.h>
- int result;
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α »α«óÑα∩ÑΓ, íδ½á ½¿ ¡áªáΓá ¬½áó¿Φá */
- result = kbhit();
- /* Ñß½¿ αѺπ½∞ΓáΓ result ¡Ñ¡π½Ñó«⌐, íπΣÑα «ª¿ñáÑΓ ¡áªáΓ¿Ñ
- ¬½áó¿Φ¿. àÑ ¼«ª¡« ºáñáΓ∞ »α¿ »«¼«Θ¿ getch ¿½¿ getche. àß½¿ getch
- ¿½¿ getche í뫨 óδºóá¡δ Σπ¡¬µ¿Ñ⌐ kbhit íѺ »α«óÑન, »α«úαá¼¼á
- ñѽáÑΓ »áπºπ ¿ «ª¿ñáÑΓ óó«ñ ß¿¼ó«½á. */
-
-
- LABS
-
- #include <stdlib.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «»¿ßá¡¿∩ Σπ¡¬µ¿¿
- long labs(n);
- long n; ñ½¿¡¡«Ñ µÑ½«Ñ º¡áτÑ¡¿Ñ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ labs óδαáíáΓδóáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« ñ½¿¡-
- ¡«ú« µÑ½«ú« áαúπ¼Ñ¡Γá n.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ labs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« áαúπ¼Ñ¡-
- Γá. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼. Γá¬ªÑ abs, cabs, fabs.
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
- long x, y;
- x = -41567L;
- y = labs(x); /* y = 41567L */
-
-
- LDEXP
-
- #include <math.h>
- double ldext(x,exp);
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- int *exp; µÑ½á∩ φ¬ß»«¡Ñ¡Γá
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ ldexp ó«ºóαáΘáÑΓ x, π¼¡«ªÑ¡¡«Ñ ¡á 2 ó ßΓѻѡ¿ exp.
- é ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩ αѺπ½∞ΓáΓá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ +HUGE ¿½¿
- -HUGE (ó ºáó¿ß¿¼«ßΓ¿ «Γ º¡á¬á x) ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE.
- æ¼.Γá¬ªÑ frexp, modf.
-
- - 147 -
-
-
-
- Åα¿¼Ñα:
-
- #include <math.h>
- double x,y;
- int p;
- x = 1.5;
- p = 5;
- y = ldexp(x,p); /* y = 48.0 */
-
-
- LFIND - LSEARCH
-
- #include <search.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- char *lsearch(key,base,num,width,compare);
- char *lfind(key,base,num,width,compare);
- char *key; ¬½ετ »«¿ß¬á
- char *base; π¬áºáΓѽ∞ ¡á »«¿ß¬«óπε íáºπ
- ñá¡¡δσ
- unsigned *num,width; τ¿ß½« ¿ αẼÑα φ½Ñ¼Ñ¡Γ«ó
- int (*compare)(); π¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε ßαáó¡Ñ¡¿∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ lsearch ¿ lfind »α«¿ºó«ñ∩Γ ßΓ᫬«óδ⌐ »«¿ß¬ ñ½∩ º¡á-
- τÑ¡¿∩ key ó ¼áßß¿óÑ ¿º num φ½Ñ¼Ñ¡Γ«ó, ¬áªñδ⌐ αẼÑα«¼ width íá⌐Γ.
- (é «Γ½¿τ¿¿ «Γ bsearch, lsearch ¿ lfind ¡Ñ ΓαÑíπεΓ «Γß«αΓ¿α«óá¡¡«-
- ú« ¼áßß¿óá). Çαúπ¼Ñ¡Γ base ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á íáºπ ¼áßß¿óá,
- ¬«Γ«αδ⌐ ¡πª¡« ¡á⌐Γ¿.
- àß½¿ key ¡Ñ ¡á⌐ñÑ¡, lsearch »α¿ß«Ññ¿¡∩ÑΓ Ñú« ó ¬«¡Ñµ. öπ¡¬-
- µ¿∩ lfind φΓ«ú« ¡Ñ ñѽáÑΓ.
- Çαúπ¼Ñ¡Γ compare ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á »α«µÑñπαπ, »«ßΓáó-
- ½∩Ѽπε »«½∞º«óáΓѽѼ, ¬«Γ«αá∩ ßαáó¡¿óáÑΓ ñóá φ½Ñ¼Ñ¡Γá ¼áßß¿óá ¿
- ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, «»αÑñѽ∩εΘÑÑ ¿σ «Γ¡«ΦÑ¡¿Ñ. ÄíÑ Σπ¡¬µ¿¿ óδºδ-
- óáεΓ »α«µÑñπαπ compare ó ΓÑτÑ¡¿¿ »«¿ß¬á «ñ¿¡ ¿½¿ ¡Ñ߬«½∞¬« αáº,
- »ÑαÑßδ½á∩ ó ¬áªñ«¼ ó맮óÑ π¬áºáΓѽ¿ ¡á ñóá φ½Ñ¼Ñ¡Γá ¼áßß¿óá. ¥Γá
- »α«µÑñπαá ñ«½ª¡á ßαáó¡¿óáΓ∞ φ½Ñ¼Ñ¡Γδ, á ºáΓѼ ó«ºóαáΘáΓ∞ «ñ¡« ¿º
- ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
- ç¡áτÑ¡¿Ñ àú« ß¼δß½
-
- ¡Ñ αáó¡« 0 element 1 ¿ element 2 αẽ¿τ¡δ
-
- 0 element 1 αáóÑ¡ element 2
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ÄíÑ Σπ¡¬µ¿¿ lsearch ¿ lfind ó«ºóαáΘáεΓ π¬áºáΓѽ∞ ¡á »Ñαó«Ñ
- 󫺡¿¬¡«óÑ¡¿Ñ key ó ¼áßß¿óÑ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ base.
- àß½¿ key ¡Ñ ¡á⌐ñÑ¡, φΓ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ NULL.
- æ¼.Γá¬ªÑ bsearch.
-
-
- - 148 -
-
-
-
- Åα¿¼Ñα:
-
- /* Σπ¡¬µ¿∩ lsearch »α«¿ºó«ñ¿Γ ßΓ᫬«óδ⌐ »«¿ß¬ ó ¼áßß¿óÑ ñ½∩
- φ½Ñ¼Ñ¡Γá "key"; lsearch ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ, Ñß½¿ ó
- ¡Ñ⌐ ß«ñÑনΓß∩ key, ¿ NULL - Ñß½¿ Ñú« ¡ÑΓ. */
-
- #include <search.h>
- #include <string.h>
- #include <stdio.h>
- int compare();
- /* ñ«½ª¡á íδΓ∞ «íΩ∩ó½Ñ¡á ¬á¬ Σπ¡¬µ¿∩ */
- main (argc, argv)
- int argc;
- char **argv;
- {
- char **result;
- char *key = "PATH";
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¡áσ«ñ¿Γ áαúπ¼Ñ¡Γ, ¡áτ¿¡áεΘ¿⌐ß∩ ß
- "PATH", ó »αÑñ»«½«ªÑ¡¿¿, τΓ« áαúπ¼Ñ¡Γδ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ «Γß«αΓ¿-
- α«óá¡δ */
- result = (char **)bsearch((char *)&key,
- (char *)argv, argc, sizeof(char *),
- compare);
- if (result)
- printf ("%s found\n", *result);
- else
- printf("PATH not found!\n");
- }
- int compare (arg1, arg2)
- char **arg1, **arg2;
- {
- return(strncmp(*arg1, *arg2, strlen(*arg1)));
- }.
-
-
- LOCALTIME
-
- #include <time.h>
- struct tm *localtime(time);
- long *time; π¬áºáΓѽ∞ ¡á σαá¡¿¼«Ñ
- óαѼ∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ localtime »αÑ«íαẫóδóáÑΓ óαѼ∩, σαá¡¿¼«Ñ ¬á¬
- long-º¡áτÑ¡¿Ñ, ¬ ßΓαπ¬ΓπαÑ. Long-º¡áτÑ¡¿Ñ time »αÑñßΓáó½∩ÑΓ ßÑ-
- ¬π¡ñδ, »α«ΦÑñΦ¿Ñ «Γ 00:00:00 º¡áτÑ¡¿∩ óαѼѡ¿ »« âα¿¡ó¿τπ, Γ.Ñ. ß
- 1 ∩¡óáα∩ 1980 ú«ñá. ¥Γ« º¡áτÑ¡¿Ñ «íδτ¡« »«½πτáÑΓß∩ ¿º ó맮óá Σπ¡-
- ¬µ¿¿ time.
- öπ¡¬µ¿∩ localtime αáºαδóáÑΓ º¡áτÑ¡¿Ñ time, ¬«ααÑ¬Γ¿απÑΓ º«-
- ¡π ¼ÑßΓ¡«ú« óαѼѡ¿ ¿ »ÑαÑσ«ñ ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩, Ñß½¿ «¡
- ¡áº¡áτÑ¡, ¿ ºá»«¼¿¡áÑΓ «Γ¬«ααÑ¬Γ¿α«óá¡¡«Ñ óαѼ∩ ó ßΓαπ¬ΓπαÑ Γ¿»á
- tm.(漫Γα¿ΓÑ gmtime ñ½∩ «»¿ßá¡¿∩ »«½Ñ⌐ ßΓα¬Γπαδ tm.)
- é MS DOS ñáΓδ αá¡∞ΦÑ 1980 ú«ñá ¡Ñ »«¡¿¼áεΓß∩. àß½¿ time
- »αÑñßΓáó½∩ÑΓ ñáΓπ »ÑαÑñ 1 ∩¡óáα∩ 1980 ú«ñá ,localtime ó«ºóαáΘáÑΓ
-
- - 149 -
-
-
- ß¿¼ó«½∞¡πε ßΓ᫬π, »αÑñßΓáó½Ñ¡¡πε 00:00:00 January 1,1980.
- öπ¡¬µ¿∩ localtime ñѽáÑΓ ¿º¼Ñ¡Ñ¡¿∩ ñ½∩ º«¡δ ¼ÑßΓ¡«ú« óαѼÑ-
- ¡¿, Ñß½¿ »«½∞º«óáΓѽ∞ ó»ÑαóδÑ πßΓá¡«ó¿½ »ÑαѼѡ¡πε «¬απªÑ¡¿∩ TZ.
- ç¡áτÑ¡¿Ñ¼ TZ ñ«½ª¡á íδΓ∞ ¡áºóá¡¡á∩ ΓαÑσíπ¬óÑ¡¡á∩ óαѼѡ¡á∩ º«¡á,
- ¡á»α¿¼Ñα PST, ß½ÑñπεΘá∩ ºá 󫺼«ª¡δ¼ º¡á¬«óδ¼ τ¿ß½«¼, ºáñáεΘ¿¼
- αẽ¿τ¿Ñ ¼Ñªñπ º¡áτÑ¡¿Ñ¼ óαѼѡ¿ »« âα¿¡ó¿τπ ¿ º«¡«⌐ ¼ÑßΓ¡«ú«
- óαѼѡ¿. ù¿ß½« ñ«½ª¡« ß½Ññ«óáΓ∞ ºá ΓαÑσíπ¬óÑ¡¡«⌐ º«¡«⌐ »ÑαÑσ«ñá
- ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩ (¡á»α¿¼Ñα PDT). öπ¡¬µ¿∩ localtime ¿ß»«½∞-
- ºπÑΓ αẽ¿τ¿∩ ¼Ñªñπ º¡áτÑ¡¿Ñ¼ óαѼѡ¿ »« âα¿¡ó¿τπ ¿ ¼ÑßΓ¡δ¼ óαÑ-
- ¼Ñ¡Ñ¼ ñ½∩ πßΓá¡«ó¬¿ º¡áτÑ¡¿∩ ºá»«¼¡Ñ¡¡«ú« óαѼѡ¿. àß½¿ ó πßΓá-
- ¡«ó¬Ñ TZ »α¿ßπΓßΓóπÑΓ º«¡á »ÑαÑσ«ñá ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩,
- localtime Γá¬ªÑ ¿º¼Ñ¡∩ÑΓ »ÑαÑσ«ñ ¡á ½ÑΓ¡ÑÑ/º¿¼¡ÑÑ óαѼ∩. àß½¿ ó
- TZ ¡ÑΓ ΓѬπΘÑú« º¡áτÑ¡¿∩, ¿ß»«½∞ºπÑΓß∩ º¡áτÑ¡¿Ñ PST8PDT, πßΓá¡áó-
- ½¿óáѼ«Ñ »« π¼«½τá¡¿ε.
- è«úñá TZ πßΓá¡«ó½Ñ¡á, áóΓ«¼áΓ¿τÑ߬¿ πßΓá¡áó½¿óáεΓß∩ Γα¿
- ñαπú¿Ñ »ÑαѼѡ¡δÑ «¬απªÑ¡¿∩ - timezone, daylight, tzname. 漫Γα¿-
- ΓÑ Σπ¡¬µ¿ε tzset ñ½∩ «»¿ßá¡¿∩ φΓ¿σ »ÑαѼѡ¡δσ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ localtime ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ ó
- ßΓαπ¬ΓπαÑ. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼.Γá¬ªÑ asctime, ctime, ftime, gmtime, time, tzset.
-
- Åα¿¼Ñα:
-
- #include <stddio.h>
- #include <time.h>
- main()
- {
- struct tm *newtime;
- char *am_pm="PM";
- time_t long_time;
- time(&long_time);
- newtime=localtime(&long_time);
- if(newtime->tm_hour<12)
- am_pm="AM";
- if(newtime->tm_hour>12)
- newtime->tm_hour-=12;
- printf("%.19s %s\n", asctime(newtime), am_pm);
- }
-
- ìá óδσ«ñÑ:
- Tue Dec 10 11:30:12 AM
-
-
- LOCKING
-
- #include <sys\locking.h>
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int locking(handle,mode,nbyte);
- int handle; Σá⌐½«óδ⌐ handle
- int mode; αѪ¿¼ í½«¬¿α«ó¬¿ Σá⌐½á
- int nbyte; τ¿ß½« í½«¬¿α«óá¡¡δσ íá⌐Γ«ó
-
- - 150 -
-
-
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ locking í½«¬¿απÑΓ ¿½¿ αáºí½«¬¿απÑΓ íá⌐Γδ nbytes
- Σá⌐½á, «»αÑñѽѡ¡«ú« »« handle. ü½«¬¿α«ó¬á íá⌐Γ«ó ó Σá⌐½Ñ ¡Ñ αáº-
- αÑΦáÑΓ »«ß½ÑñπεΘÑú« τΓÑ¡¿∩ ¿ ºá»¿ß¿ φΓ¿σ íá⌐Γ«ó ñαπú¿¼¿ »α«µÑßßá-
- ¼¿. Éáºí½«¬¿α«ó¬á Σá⌐½á αáºαÑΦáÑΓ ñαπú¿¼ »α«µÑßßá¼ τ¿ΓáΓ∞ ¿½¿ ºá-
- »¿ßδóáΓ∞ ó íá⌐Γδ, ºáí½«¬¿α«óá¡¡δÑ αá¡ÑÑ. ü½«¬¿α«óá¡¿Ñ ¿½¿ αáºí½«-
- ¬¿α«óá¡¿Ñ ¡áτ¿¡áÑΓß∩ ß ΓѬπΘÑ⌐ »«º¿µ¿¿ π¬áºáΓѽ∩ ¡á Σá⌐½ ¿ αáß»-
- α«ßΓαá¡∩ÑΓß∩ ñ« ß½ÑñπεΘ¿σ nbyte íá⌐Γ«ó ¿½¿ ñ« ¬«¡µá Σá⌐½á.
- Çαúπ¼Ñ¡Γ mode «»αÑñѽ∩ÑΓ óδ»«½¡∩ѼδÑ ñÑ⌐ßΓó¿∩ í½«¬¿α«ó¬¿.
- Ä¡ ¼«ªÑΓ íδΓ∞ «ñ¡«⌐ ¿º ß½ÑñπεΘ¿σ manifest-¬«¡ßΓá¡Γ.
-
-
- îanifest-¬«¡ßΓá¡Γá ç¡áτÑ¡¿Ñ
-
- LK_LOCK ü½«¬¿α«ó¬á ºáñá¡¡δσ íá⌐Γ«ó. àß½¿ íá⌐Γδ
- ¡Ñ ºáí½«¬¿α«ó὿ß∞, »α«¿ßσ«ñ¿Γ
- »«óΓ«α¡á∩ »«»δΓ¬á í½«¬¿α«ó¬¿ τÑαѺ 1
- ßѬπ¡ñπ. àß½¿ »«ß½Ñ 10 »«»δΓ«¬ íá⌐Γδ ¡Ñ
- ºáí½«¬¿α«ó὿ß∞, ó«ºóαáΘáÑΓß∩ «Φ¿í¬á.
-
- LK_RLCK ǡὫú¿τ¡« LK_LOCK.
-
- LK_NBLCK ü½«¬¿α«ó¬á ºáñá¡¡δσ íá⌐Γ«ó. àß½¿ íá⌐Γδ
- ¡Ñ ºáí½«¬¿α«óá¡δ, ó«ºóαáΘáÑΓß∩ «Φ¿í¬á.
-
- LK_NRLCK ǡὫú¿τ¡« LK_NBLCK.
-
- LK_UNLCK Éáºí½«¬¿α«ó¬á ºáñá¡¡δσ íá⌐Γ«ó. üá⌐Γδ
- ñ«½ª¡δ íδΓ∞ αá¡ÑÑ ºáí½«¬¿α«óá¡δ.
-
-
- ä½∩ Σá⌐½á ¼«ªÑΓ íδΓ∞ ºáí½«¬¿α«óá¡á í«½ÑÑ τѼ «ñ¡á «í½áßΓ∞,
- ¡« αáí«Γá ß »ÑαѬΓδΓ묨 «í½áßΓ∩¼¿ ¡Ñ ñ«»π߬áÑΓß∩. èα«¼Ñ Γ«ú«, ó
- «ñ¡« ¿ Γ« ªÑ óαѼ∩ ¡Ñ ¼«ªÑΓ íδΓ∞ αáºí½«¬¿α«óá¡á í«½ÑÑ τѼ «ñ¡á
- «í½áßΓ∞.
- è«úñá Σá⌐½ αáºí½«¬¿απÑΓß∩, «í½áßΓ∞ αáºí½«¬¿απѼ«ú« Σá⌐½á
- ñ«½ª¡á ß««ΓóÑΓßΓó«óáΓ∞ αá¡ÑÑ ºáí½«¬¿α«óá¡¡«⌐ «í½áßΓ¿. öπ¡¬µ¿∩
- locking ¡Ñ ¼«ªÑΓ αáºí½«¬¿α«óáΓ∞ «ñ¡«óαѼѡ¡« ߼Ѫ¡δÑ «í½áßΓ¿, Γá¬
- ¬á¬ Ñß½¿ ñóÑ «í½áßΓ¿ ∩ó½∩εΓß∩ ߼Ѫ¡δ¼¿, ¬áªñá∩ «í½áßΓ∞ ñ«½ª¡á
- íδΓ∞ αáºí½«¬¿α«óá¡á «Γñѽ∞¡«.
- éßÑ í½«¬¿α«ó¬¿ ñ«½ª¡δ íδΓ∞ πñá½Ñ¡δ »ÑαÑñ ºá¬αδΓ¿Ñ¼ Σá⌐½á
- ¿½¿ »ÑαÑñ óδσ«ñ«¼ ¿º »α«úαá¼¼δ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ locking ó«ºóαáΘáÑΓ 0, Ñß½¿ «¡á πß»ÑΦ¡« óδ»«½¡¿½áß∞.
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ « ¡ÑπñáτÑ ¿ errno πßΓá-
- ¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
- ç¡áτÑ¡¿Ñ àú« ß¼δß½
-
- EACCES »α¿¡πñ¿Γѽ∞¡á∩ í½«¬¿α«ó¬á (Σá⌐½ óßÑúñá
-
- - 151 -
-
-
- í½«¬¿α«óá¡ ¿½¿ αáºí½«¬¿α«óá¡).
-
- EBADF ¡ÑóÑα¡δ⌐ Σá⌐½«óδ⌐ handle.
-
- EDEADLOCK »α¿¡πñ¿Γѽ∞¡á∩ í½«¬¿α«ó¬á. ¥Γ« º¡áτÑ¡¿Ñ
- ó«ºóαáΘáÑΓß∩, Ñß½¿ ºáñá¡ Σ½½áú LK_LOCK
- ¿½¿ LK_RLCK, ¿ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞
- ºáí½«¬¿α«óá¡ »«ß½Ñ 10 »«»δΓ«¬.
-
- æ¼.Γá¬ªÑ open, creat.
-
- çá¼Ñτá¡¿Ñ! öπ¡¬µ¿∩ locking ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á Γ«½∞¬«
- ñ½∩ óÑαß¿⌐ MS DOS 3.0 ¿ »«ß½ÑñπεΘ¿σ, ó αá¡¡¿σ óÑαß¿∩σ MS DOS «¡á
- ¡Ñ ñáÑΓ ¡¿¬á¬«ú« αѺπ½∞ΓáΓá.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <sys\locking.h>
- #include <stdlib.h>
- extern unsigned char _osmajor;
- int fh;
- long pos;
- .
- .
- .
- /* ß«σαá¡¿Γ∞ ΓѬπΘπε »«º¿µ¿ε π¬áºáΓѽ∩ ¡á Σá⌐½, ºáΓѼ í½«-
- ¬¿α«óáΓ∞ «í½áßΓ∞ «Γ ¡áτá½á Σá⌐½á ñ« ß«σαá¡Ñ¡¡«⌐ »«º¿µ¿¿ π¬áºáΓѽ∩
- ¡á Σá⌐½ */
- if (_osmajor >= 3) {
- pos=tell(fh);
- lseek(fh, OL, O);
- if ((locking(fh, LK_NBLCK,pos)) != -1) {
- .
- .
- .
- lseek(fh, OL, O);
- locking((fh, LK_UNLCK, pos);
- }
- }
-
-
- LOG-LOG10
-
- #include <math.h>
- double log(x); óδτ¿ß½∩ÑΓ ¡áΓπαá½∞¡δ⌐ ½«úáα¿Σ¼ x.
- double log10(x); óδτ¿ß½∩ÑΓ ñÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼ x.
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ log ¿ log10 óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« ¡áΓπαá½∞¡δ⌐ ¿
- ñÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼ x.
-
-
- - 152 -
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿¿ log ¿ log10 ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ ½«úáα¿Σ¼á. àß½¿ x
- «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ, «íÑ Σπ¡¬µ¿¿ »ÑτáΓáεΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ
- DOMAIN ó stderr ¿ ó«ºóαáΘáεΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE. àß½¿ x
- αáó¡« 0, «íÑ Σπ¡¬µ¿¿ »ÑτáΓáεΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ SING ¿ ó«ºóαá-
- ΘáεΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE. ê ó Γ«¼ ¿ ó ñαπú«¼ ß½πτáÑ errno
- πßΓá¡áó½¿óáÑΓß∩ ó EDOM.
- Äíαáí«Γ¬á «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óá¡á »α¿ ¿º¼Ñ¡Ñ¡¿¿
- »α«µÑñπαδ matherr.
- æ¼.Γá¬ªÑ exp, matherr, pow.
-
- Åα¿¼Ñα:
-
- #include <math.h>
- double xx = 1000.0, y;
- y = log(x); /* y = 6.907755 */
- /* Σπ¡¬µ¿∩ log10 óδτ¿ß½∩ÑΓ ñÑß∩Γ¿τ¡δ⌐ ½«úáα¿Σ¼ ñ½∩ ºáñá¡¡«-
- ú« º¡áτÑ¡¿∩ */
- y = log10(x); /* y = 3.0 */
-
-
-
- LONGJMP.
-
- #include <setjmp.h>
- void longjmp(env, value);
- jmp_buf env; »ÑαѼѡ¡á∩, ó ¬«Γ«α«⌐
- σαá¡¿Γß∩ «¬απªÑ¡¿Ñ
- int value; º¡áτÑ¡¿Ñ, ó«ºóαáΘáѼ«Ñ
- »α¿ ó맮óÑ setjmp.
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ longjmp ó«ßßΓá¡áó½¿óáÑΓ ß«ßΓ«∩¡¿Ñ ßΓѬá, αá¡ÑÑ ß«σ-
- αá¡Ñ¡¡«Ñ ó env Σπ¡¬µ¿Ñ⌐ setjmp.
- öπ¡¬µ¿¿ setjmp ¿ longjmp «íÑß»Ñτ¿óáεΓ ó«º¼«ª¡«ßΓ∞ óδ»«½¡Ñ-
- ¡¿∩ ¡Ñ½«¬á½∞¡«ú« (nonlocal) »ÑαÑσ«ñá ¿ «íδτ¡« ¿ß»«½∞ºπεΓß∩ ñ½∩
- »ÑαÑñáτ¿ π»αáó½Ñ¡¿∩ ¡á óδ»«½¡Ñ¡¿Ñ «íαáí«Γ¬¿ «Φ¿í«¬; ó«ßßΓá¡áó½¿-
- óáεΓ ¬«ñ ó αá¡ÑÑ óδºóá¡¡«⌐ »α«µÑñπαÑ (íѺ ¿ß»«½∞º«óá¡¿∩ «íδτ¡«ú«
- ó맮óá); ó«ºóαáΘáεΓ πß½«ó¡δÑ «í«º¡áτÑ¡¿∩.
- éδº«ó«¼ setjmp ß«σαá¡∩ÑΓß∩ ΓѬπΘÑÑ ß«ßΓ«∩¡¿Ñ ßΓѬá ó env.
- ū߽ÑñπεΘ¿⌐ ó맮ó longjmp ó«ßßΓá¡áó½¿óáÑΓ ß«σαá¡Ñ¡¡«Ñ ß«ßΓ«∩¡¿Ñ ¿
- ó«ºóαáΘáÑΓ π»αáó½Ñ¡¿Ñ ¡á π¬áºáΓѽ∞ (Γ«τ¬π óσ«ñá), ¡Ñ»«ßαÑñßΓóÑ¡¡«
- ß½ÑñπεΘ¿⌐ ºá ß««ΓóÑΓßΓóπεΘ¿¼ óδº«ó«¼ setjmp.
- éδ»«½¡Ñ¡¿Ñ ó«º«í¡«ó½∩ÑΓß∩, ¬«úñá ó맮ó setjmp ó«ºóαáΘáÑΓ
- ºáñá¡¡«Ñ value. è«úñá óδºδóáÑΓß∩ longjmp, º¡áτÑ¡¿∩ óßÑσ »ÑαѼѡ-
- ¡δσ (ºá ¿ß¬½ετÑ¡¿Ñ¼ »ÑαѼѡ¡δσ αÑú¿ßΓαá) ßΓá¡«ó∩Γß∩ ñ«ßΓπ»¡δ¼¿
- ñ½∩ »α«µÑñπαδ, ¬«Γ«αá∩ »α¿¡¿¼áÑΓ π»αáó½Ñ¡¿Ñ ¿ ß«ñÑαª¿Γ º¡áτÑ¡¿∩
- φΓ¿σ »ÑαѼѡ¡δσ. ç¡áτÑ¡¿∩ »ÑαѼѡ¡δσ αÑú¿ßΓαá ¡Ñ»αÑñ߬áºπѼδ.
- öπ¡¬µ¿∩ longjmp ñ«½ª¡á óδºδóáΓ∞ß∩ αá¡ÑÑ Σπ¡¬µ¿¿, «»αÑñѽ∩ε-
- ΘÑ⌐ ó«ºóαáΓ setjmp. àß½¿ longjmp óδºóá¡á »«ß½Ñ Σπ¡¬µ¿¿, «»αÑñѽ∩-
- εΘÑ⌐ ó«ºóαáΓ setjmp, Γ« ¼«ªÑΓ »α«¿º«⌐Γ¿ ¡Ñ»αÑñ߬áºπѼ«Ñ »«óÑñÑ¡¿Ñ
- »α«úαá¼¼δ.
- ç¡áτÑ¡¿Ñ value, ó«ºóαáΘáѼ«Ñ longjmp, ñ«½ª¡« íδΓ∞ ¡Ñ¡π½Ñ-
- óδ¼. àß½¿ ñ½∩ value ºáñá¡ áαúπ¼Ñ¡Γ 0, º¡áτÑ¡¿Ñ ó«ºóαáΓá ºá¼Ñ¡∩ÑΓ-
-
- - 153 -
-
-
- ß∩ º¡áτÑ¡¿Ñ¼ 1.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
- æ¼. Γá¬ªÑ setjmp.
-
- ÅαÑñπ»αѪñÑ¡¿Ñ! ç¡áτÑ¡¿∩ »ÑαѼѡ¡δσ αÑú¿ßΓαá ó »α«µÑñπαÑ,
- óδºδóáεΘÑ⌐ setjmp, »«ß½Ñ óδ»«½¡Ñ¡¿∩ longjmp ¡Ñ ¼«úπΓ íδΓ∞ ó«ßßΓá-
- ¡«ó½Ñ¡δ ¬ ß«íßΓóÑ¡¡δ¼ º¡áτÑ¡¿∩¼.
-
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include <setjmp.h>
- jmp_buf mark;
- main()
- {
- if (setjmp(mark) != 0)
- { printf("longjmp has been called\n");
- recover();
- exit(1);
- }
- printf("setjmp has been called\n");
- .
- .
- .
- p();
- .
- .
- .
- }
-
- p()
- {
- int error = 0;
- .
- .
- .
- if (error != 0)
- longjmp(mark, -1);
- .
- .
- .
- }
-
- recover()
- {
-
- /* »α¿ óδσ«ñÑ ¿º »α«úαá¼¼δ πíÑñ¿ΓÑß∞, τΓ« Σá⌐½δ ñá¡¡δσ ¡Ñ
- íπñπΓ ºá»«ατÑ¡δ */
- .
- .
- .
- }.
-
-
- - 154 -
-
-
-
-
- LSEEK
-
-
- #include <stdio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿⌐.
- long lseek (stream, offset, origin);
- int handle; handle, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½
- long offset; τ¿ß½« íá⌐Γ«ó ¿º origin.
- int «rigin; ¡áτá½∞¡á∩ »«º¿µ¿∩.
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ lseek »ÑαÑñó¿úáÑΓ π¬áºáΓѽ∞ ¡á Σá⌐½ (Ñß½¿ «¡ ÑßΓ∞),
- ßó∩ºá¡¡δ⌐ ß handle, ¡á ¡«ó«Ñ ¼ÑßΓ« αáß»«½«ªÑ¡¿∩, ¬«Γ«α«Ñ ∩ó½∩ÑΓß∩
- íá⌐ΓἿ offset ¿º origin.
- æ½ÑñπεΘá∩ «»Ñαᵿ∩ ó Σá⌐½Ñ óδ»«½¡∩ÑΓß∩ ¡á ¡«ó«¼ ¼ÑßΓÑ αáß-
- »«½«ªÑ¡¿∩.
- Çαúπ¼Ñ¡Γ origin ¼«ªÑΓ íδΓ∞ «ñ¡«⌐ ¿º ß½ÑñπεΘ¿σ ¬«¡ßΓá¡Γ, «»-
- αÑñѽѡ¡δσ ó <stdio.h>.
-
- ORIGIN ÄÅÉàäàïàìêà
-
- SEEK-SET ¡áτὫ Σá⌐½á.
-
- SEEK-CUR ΓѬπΘá∩ »«º¿µ¿∩ π¬áºáΓѽ∩ ¡á
- Σá⌐½.
-
- SEEK-END ¬«¡Ñµ Σá⌐½á.
-
- öπ¡¬µ¿∩ lseek ¿ß»«½∞ºπÑΓß∩ ñ½∩ »ÑαѼÑΘÑ¡¿∩ π¬áºáΓѽ∩ ó ½ε-
- í«Ñ ¼ÑßΓ« Σá⌐½á. ô¬áºáΓѽ∞ ñ«½ªÑ¡ íδΓ∞ αẼÑΘÑ¡ ó¡Ñ ¬«¡µá Σá⌐½á.
- Äñ¡á¬« »«»δΓ¬á αáß»«½«ª¿Γ∞ π¬áºáΓѽ∞ ¡á Σá⌐½ ó ¡áτá½Ñ Σá⌐½á «íδτ-
- ¡« »α¿ó«ñ¿Γ ¬ «Φ¿í¬Ñ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ lseek ó«ºóαáΘáÑΓ αáºóÑΓó½Ñ¡¿Ñ origin ó íá⌐Γáσ, «»-
- αÑñѽѡ¡«Ñ ¬á¬ º¡áτÑ¡¿Ñ «Γ ¡«ó«⌐ »«º¿µ¿¿ ñ« ¡áτá½á Σá⌐½á. 髺óαá-
- ΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á «Φ¿í¬π; errno πßΓá¡áó½¿óáÑΓß∩ ó
- «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
- éàïêùêìÇ àà æî¢æïÄéÄà çìÇùàìêà
-
- EBADF ìÑóÑα¡δ⌐ handle-α Σá⌐½á.
-
- ENIVAL ìÑóÑα¡«Ñ º¡áτÑ¡¿Ñ ñ½∩ origin ¿½¿
- »«º¿µ¿∩, «»αÑñѽѡ¡á∩ »α¿ »«¼«Θ¿
- offset, ¡áσ«ñ¿Γß∩ »ÑαÑñ ¡áτὫ¼
- Σá⌐½á.
-
- ä½∩ πßΓα«⌐ßΓó, ¡Ñ »α¿ß»«ß«í½Ñ¡¡δσ ñ½∩ »«¿ß¬á (seek), (Γᬿσ
-
- - 155 -
-
-
- ¬á¬ ΓÑନ¡á½ ¿ »ÑτáΓ∞), ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡Ñ«»αÑñѽѡ«.
- æ¼. Γá¬ªÑ fseek, tell.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <fcntl.h>
- #include <stdlib.h>
- int fh;
- long position;
- fh = open("data", O_RDONLY);
- .
- .
- .
- /* 0 - αáºóÑΓó½Ñ¡¿Ñ «Γ ¡áτá½á */
- position = lseek (fh, 0L, SEEK_SET);
- if (position == -1L)
- perror("lseek to beginning failed");
- .
- .
- .
- /* ¡áσ«ñ¿Γ ΓѬπΘπε »«º¿µ¿ε */
- position = lseek (fh, 0L, SEEK_CUR);
- if (position == -1L)
- perror("lseek to current position failed");
- .
- .
- .
- /* óδ»«½¡∩ÑΓ ñ« ¬«¡µá Σá⌐½á */
- if (position == -1L)
- perror("lseek to end failed");.
-
-
- LTOA
-
- #include <stdlib.h> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
- char *ltoa(value,string,radix);
- int value; »αÑ«íαáºπѼ«Ñ τ¿ß½«
- char *string; ßΓ᫬á αѺπ½∞ΓáΓá
- int radix; «ß¡«óá¡¿Ñ value
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ ltoa »αÑ«íαáºπÑΓ ß¿¼ó«½δ value ó ß¿¼ó«½∞¡πε ßΓ᫬π,
- ºá¬á¡τ¿óáεΘπεß∩ NULL-ß¿¼ó«½«¼, ¿ ºá»«¼¿¡áÑΓ αѺπ½∞ΓáΓ ó string.
- Çαúπ¼Ñ¡Γ radix «»αÑñѽ∩ÑΓ «ß¡«óá¡¿Ñ ß¿ßΓѼδ ßτ¿ß½Ñ¡¿∩ ñ½∩ value;
- Ñú« º¡áτÑ¡¿Ñ ¼«ªÑΓ ½ÑªáΓ∞ ó »αÑñѽáσ «Γ 2 ñ« 36. àß½¿ radix = 10
- ¿ value - «Γα¿µáΓѽ∞¡«Ñ τ¿ß½«, Γ« »Ñαóδ¼ ß¿¼ó«½«¼ αѺπ½∞Γ¿απεΘÑ⌐
- ßΓ᫬¿ íπñÑΓ º¡á¬ ¼¿¡πß.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ ltoa ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓ᫬π. 髺óαáΘáѼ«ú«
- º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
-
- - 156 -
-
-
- æ¼.Γá¬ªÑ itoa, ultoa.
-
- çá¼Ñτá¡¿Ñ! ÉẼÑα »á¼∩Γ¿, «Γó«ñ¿¼«⌐ ñ½∩ string, ñ«½ªÑ¡ íδΓ∞
- í«½∞ΦÑ, τѼ ΓαÑíπÑΓß∩ ñ½∩ ó«ºóαáΘáѼ«⌐ ßΓ᫬¿. öπ¡¬µ¿∩ ¼«ªÑΓ ó«º-
- óαáΘáΓ∞ ßΓ᫬π ñ½¿¡«⌐ ñ« 33 íá⌐Γ«ó.
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
- int radix=10;
- char buffer[20];
- char *p;
- p=itoa(-344115L,buffer,radix); /*p="-344115"*/
-
-
- MALLOC
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- char *malloc(size);
- unsigned size; ¬«½¿τÑßΓó« íá⌐Γ«ó ó ºáσóáτÑ¡¡«¼
- í½«¬Ñ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ malloc ºáσóáΓδóáÑΓ í½«¬ »á¼∩Γ¿ »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ¡Ñ
- ¼Ñ¡∞ΦÑ⌐, τѼ ¿º size íá⌐Γ«ó. (ü½«¬ ¼«ªÑΓ íδΓ∞ í«½∞ΦÑ, τѼ size
- íá⌐Γ«ó, »α¿¡áñ½ÑªáΘ¿σ »α«ßΓαá¡ßΓóπ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ ñ½∩ óδαáó-
- ¡¿óá¡¿∩ ¿ ñ½∩ »«ññÑαªá¡¿∩ ¿¡Σ«α¼áµ¿¿).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ malloc ó«ºóαáΘáÑΓ char-π¬áºáΓѽ∞ ¡á ºáσóáτÑ¡¡«Ñ
- »α«ßΓαá¡ßΓó«.
- é »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
- αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ
- »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«í-
- αẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
- 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ ßó«í«ñ¡«⌐ »á¼∩Γ¿ «ßΓὫß∞
- ¼á½«.
- æ¼.Γá¬ªÑ calloc, free, realloc.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
- int *intarray;
- /* ºáσóáΓδóáÑΓ »α«ßΓαá¡ßΓó« ñ½∩ 20 µÑ½δσ */
- intarray=(int*)malloc(20*sizeof(int));
-
-
- MATHERR
-
- #include <math.h>
- int matherr(x);
- struct exception *x; ¿¡Σ«α¼áµ¿∩ « ¼áΓѼáΓ¿τÑ߬¿σ
-
- - 157 -
-
-
- ¿ß¬½ετÑ¡¿∩σ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ matherr «íαáíáΓδóáÑΓ «Φ¿í¬¿, »«α«ªñÑ¡¡δÑ Σπ¡¬µ¿∩¼¿
- ¼áΓѼáΓ¿τÑ߬«⌐ í¿í½¿«ΓѬ¿. îáΓѼáΓ¿τÑ߬¿Ñ Σπ¡¬µ¿¿ óδºδóáεΓ
- matherr, ¬«úñá «í¡áαπªÑ¡á «Φ¿í¬á. Å«½∞º«óáΓѽ∞ ¼«ªÑΓ «íÑß»Ñτ¿Γ∞
- αẽ¿τ¡δÑ «íΩ∩ó½Ñ¡¿∩ («»αÑñѽѡ¿∩) ñ½∩ Σπ¡¬µ¿¿ matherr, óδ»«½¡∩ε-
- Θ¿Ñ «íαáí«Γ¬π ߻ѵ¿á½∞¡δσ «Φ¿í«¬.
- àß½¿ ó ¼áΓѼáΓ¿τÑ߬«⌐ »α«µÑñπαÑ ó«º¡¿¬½á «Φ¿í¬á, matherr
- óδºδóáÑΓß∩ ß π¬áºáΓѽѼ ¡á ß½ÑñπεΘπε ßΓαπ¬Γπαπ («íΩ∩ó½Ñ¡¡πε ó
- <math.h>) ¬á¬ áαúπ¼Ñ¡Γ.
-
- struct exeption {
- int type;
- char *name;
- double arg1, arg2, retval;
- };
-
- Type «»αÑñѽ∩ÑΓ Γ¿» ¼áΓѼáΓ¿τÑ߬«⌐ «Φ¿í¬¿. Ä¡ ¼«ªÑΓ íδΓ∞
- «ñ¡¿¼ ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐, «íΩ∩ó½Ñ¡¡δσ ó <math.h>
-
- ç¡áτÑ¡¿Ñ àú« ß¼δß½
-
- DOMAIN ÄΦ¿í¬á «í½áßΓ¿ («»αÑñѽѡ¿∩) áαúπ¼Ñ¡Γá.
-
- SING Äß«íÑ¡¡«ßΓ∞ áαúπ¼Ñ¡Γá.
-
- OVERFLOW ÄΦ¿í¬á ñ¿á»áº«¡á («í½áßΓ¿) »ÑαÑ»«½¡Ñ¡¿∩
-
- UNDERFLOW ÄΦ¿í¬á ñ¿á»áº«¡á »«ΓÑα¿ º¡áτ¿¼«ßΓ¿.
-
- TLOSS ÄíΘá∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
-
- PLOSS ùáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿.
-
- ¥½Ñ¼Ñ¡Γ ßΓαπ¬Γπαδ name ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á ßΓ᫬π, «¬á¡-
- τ¿óáεΘπεß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ ¿ ß«ñÑαªáΘπε ¿¼∩ Σπ¡¬µ¿¿, óδºóáóΦÑ⌐
- «Φ¿í¬π. ¥½Ñ¼Ñ¡Γδ ßΓαπ¬Γπαδ arg1 ¿ arg2 «»αÑñѽ∩εΓ º¡áτÑ¡¿∩, óδº-
- óáóΦ¿Ñ «Φ¿í¬π. (àß½¿ ºáñá¡ Γ«½∞¬« «ñ¿¡ áαúπ¼Ñ¡Γ, «¡ ºá»«¼¿¡áÑΓß∩
- ó arg1). ä½∩ ºáñá¡¡«⌐ «Φ¿í¬¿ »« π¼«½τá¡¿ε ó«ºóαáΘáÑΓß∩ º¡áτÑ¡¿Ñ
- retval. ¥Γ« º¡áτÑ¡¿Ñ ¼«ª¡« ¿º¼Ñ¡¿Γ∞. Å« ó«ºóαáΘáѼ«¼π º¡áτÑ¡¿ε
- ¼«ª¡« «»αÑñѽ¿Γ∞, ñÑ⌐ßΓó¿Γѽ∞¡« ¿½¿ ¡ÑΓ ó«º¡¿¬½á «Φ¿í¬á. àß½¿
- matherr ó«ºóαáΘáÑΓ 0, óδßóÑτ¿óáÑΓß∩ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ¿ errno
- πßΓá¡áó½¿óáÑΓß∩ ó »α¿í½¿º¿Γѽ∞¡«Ñ º¡áτÑ¡¿Ñ «Φ¿í¬¿. àß½¿ matherr
- ó«ºóαáΘáÑΓ ¡Ñ¡π½Ñó«Ñ º¡áτÑ¡¿Ñ, ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ ¡Ñ óδßóÑτ¿óá-
- ÑΓß∩ ¿ errno «ßΓáÑΓß∩ ¡Ñ¿º¼Ñ¡¡«⌐.
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ matherr ó ß½πτáÑ «Φ¿í¬¿ ó«ºóαáΘáÑΓ 0 ¿ ¡Ñ¡π½Ñó«Ñ
- º¡áτÑ¡¿Ñ, Ñß½¿ ñÑ⌐ßΓó¿Ñ óÑα¡« ¿ πß»ÑΦ¡« óδ»«½¡Ñ¡«.
- æ¼.Γá¬ªÑ acos, asin, atan, atan2, bessel, ccabs, cosh, exp,
- hypot, log, pow, sin, sinh, sqrt, tan.
-
- - 158 -
-
-
-
- Åα¿¼Ñα:
-
- #include <math.h>
- #include <string.h>
- /* óδ½áó½¿óáÑΓ «Φ¿í¬¿ ó ó맮óáσ »α«µÑñπα log ¿ log10. àß½¿
- «Φ¿í¬á ∩ó½∩ÑΓß∩ αѺπ½∞ΓáΓ«¼ «Γα¿µáΓѽ∞¡«ú« áαúπ¼Ñ¡Γá («Φ¿í¬á
- DOMAIN), ó«ºóαáΘáÑΓß∩ log ¿½¿ log10 ñ½∩ áíß«½εΓ¡«ú« º¡áτÑ¡¿∩ áα-
- úπ¼Ñ¡Γá. Å«∩ó½∩ÑΓß∩ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ. àß½¿ «Φ¿í¬á ∩ó½∩ÑΓß∩ 0
- áαúπ¼Ñ¡Γ«¼ ¿½¿ «Φ¿í¬á ßúÑ¡Ñα¿α«óá¡á ¡Ñ¬«Γ«α«⌐ ñαπú«⌐ »α«µÑñπα«⌐,
- ñÑ⌐ßΓó¿Ñ óδí¿αáÑΓß∩ »« π¼«½τá¡¿ε */
- int matherr(x)
- struct exception *x;
- {
- if (x->type==DOMAIN) {
- if(strsmp(x->name,"log")==0\0 {
- x->retval=log(-(x->arg1));
- return(1);
- }
- else if(strsmp(x->name,"log10")==0) {
- x->retval=log10(-(x->arg1));
- return(1);
- }
- }
- return(0);
- /* ¿ß»«½∞ºπÑΓß∩ ñÑ⌐ßΓó¿Ñ »« π¼«½τá¡¿ε */
- }
-
-
- _MEMAVL
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- unsigned int_memavl();
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _memavl ó«ºóαáΘáÑΓ »α¿í½¿º¿Γѽ∞¡δ⌐ αẼÑα »á¼∩Γ¿ ó
- íá⌐Γáσ, ñ«ßΓπ»¡«⌐ ñ½∩ ñ¿¡á¼¿τÑ߬«ú« αẼÑΘÑ¡¿∩ ó π¼á½τ¿óáѼ«¼
- ßÑú¼Ñ¡ΓÑ ñá¡¡δσ. ¥Γá Σπ¡¬µ¿∩ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ß calloc,
- malloc, realloc ó ¼á½«⌐ ¿ ßαÑñ¡Ñ⌐ ¼«ñѽ∩σ »á¼∩Γ¿ ¿ ß _nmalloc ó«
- óßÑσ ¼«ñѽ∩σ »á¼∩Γ¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ _memavl ó«ºóαáΘáÑΓ αẼÑα ó íá⌐Γáσ ¬á¬ íѺº¡á¬«ó«Ñ
- µÑ½«Ñ.
- æ¼.Γá¬ªÑ calloc, malloc, _freect, realloc, stackavail.
-
- Åα¿¼Ñα:
-
- main()
- {
- long *longptr;
- printf("Memory available before malloc=%u\n",
-
- - 159 -
-
-
- _memavl());
- longptr=(long*)malloc(5000*sizeof(long));
- printf("Memory available after malloc=%u\n",
- _memavl());
- }
-
-
- MEMCCPY
-
- #include <memory.f> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- #include <string.h> «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿; ¿ß-
- »«½∞ºπÑΓ ½¿í« <string.h>,
- ½¿í« <memory.h.>
-
- char *memccpy(dest,src,c,cnt);
- char *dest; ô¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ
- char *src; ô¬áºáΓѽ∞ ¡á ¿ßσ«ñ¡δ⌐
- íπΣÑα
- int c; ū߽Ññ¡¿⌐ ¬«»¿απѼδ⌐
- ß¿¼ó«½
- insigned cnt; 諽¿τÑßΓó« ß¿¼ó«½«ó
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memccpy ¬«»¿απÑΓ 0 ¿½¿ í«½ÑÑ íá⌐Γ«ó ¿º src ó dest
- 󻽫Γ∞ ñ« »Ñαó«ú« »«∩ó½Ñ¡¿∩ ß¿¼ó«½á, π¬áºá¡¡«ú« ó »ÑαѼѡ¡«⌐ c (¿
- ó¬½ετá∩ Ñú«), ¿½¿ »«¬á ¡Ñ íπñÑΓ ß¬«»¿α«óá¡« cnt íá⌐Γ«ó.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- àß½¿ ß¿¼ó«½ c ߬«»¿α«óá¡, memccpy ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
- ëà íá⌐Γ ó dest, ¬«Γ«αδ⌐ ¡Ñ»«ßαÑñßΓóÑ¡¡« ß½ÑñπÑΓ ºá ß¿¼ó«½«¼. àß-
- ½¿ c ¡Ñ íδ½ ß¬«»¿α«óá¡, memccpy ó«ºóαáΘáÑΓ NULL.
- æ¼. Γá¬ªÑ Σπ¡¬µ¿¿ memchr, memcmp, memcpy, memset.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char buffer[100],source[100];
- char *result;
- .
- .
- .
- /* è«»¿απεΓß∩ íá⌐Γδ ¿º source ó buffer, »«¬á ¡Ñ íπñÑΓ
- ** ߬«»¿α«óá¡« '\n', ¡« ¡Ñ í«½ÑÑ 100 íá⌐Γ«ó
- */
- result=memccpy(buffer,source,'\n',100);
-
-
- MEMCHR
-
- #include <memory.h> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- #include <string.h> «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿; ¿ß»«½∞-
- ºπÑΓ ½¿í« <string.h>, ½¿í«
- <memory.h>
-
- - 160 -
-
-
- char *memchr(buf,c,cnt);
- char *buf; ô¬áºáΓѽ∞ ¡á íπΣÑα
- int c; è«»¿απѼδ⌐ ß¿¼ó«½
- unsigned cnt; 諽¿τÑßΓó« ß¿¼ó«½«ó
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memchr ¡áσ«ñ¿Γ »ÑαóδÑ cnt íá⌐Γ«ó ¿º buf ß µÑ½∞ε «í-
- ¡áαπªÑ¡¿∩ »Ñαó«ú« »«∩ó½Ñ¡¿∩ ß¿¼ó«½á c. Å«¿ß¬ »α«ñ«½ªáÑΓß∩ ñ« ΓÑσ
- »«α, »«¬á ¡Ñ íπñÑΓ ¡á⌐ñÑ¡ π¬áºá¡¡δ⌐ ß¿¼ó«½ ¿½¿ ¡Ñ íπñπΓ »α«óÑαÑ¡δ
- óßÑ cnt íá⌐Γ«ó.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ memchr ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á αáß»«½«ªÑ¡¿Ñ ß¿¼ó«½á
- c ó buf. àß½¿ ß¿¼ó«½ c ¡Ñ íπñÑΓ «í¡áαπªÑ¡ ó »Ñαóδσ cnt íá⌐Γáσ
- buf, ó«ºóαáΘáÑΓß∩ NULL.
- C¼. Γá¬ªÑ memccpy, memcmp, memcpy, memset.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char buffer[100];
- char *result;
- .
- .
- .
- /* Å«¿ß¬ »Ñαó«ú« ß¿¼ó«½á 'a' ó buffer. àß½¿ 'a' ¡ÑΓ ó
- ** »Ñαóδσ 100 íá⌐Γáσ, ó«ºóαáΘáÑΓß∩ NULL
- */
- result=memchr(buffer,'a',100);
-
-
- MEMCMP
-
- #include <memory.h> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- #include <string.h> «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿; ¿ß»«½∞-
- ºπÑΓ ½¿í« <memory.h>, ½¿í«
- <string.h>
- int memcmp(buf1,buf2,cnt);
- char *buf1; ÅÑαóδ⌐ íπΣÑα
- char *buf2; éΓ«α«⌐ íπΣÑα
- unsigned cnt; 諽¿τÑßΓó« ß¿¼ó«½«ó
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memcmp »α«¿ºó«ñ¿Γ ½Ñ¬ß¿¬«úαáΣ¿τÑ߬«Ñ ßαáó¡Ñ¡¿Ñ »Ñα-
- óδσ cnt íá⌐Γ«ó ¿º buf1 ¿ buf2 ¿ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, π¬áºδóáεΘÑÑ
- ¡á ß««Γ¡«ΦÑ¡¿Ñ φΓ¿σ íπΣÑα«ó, Γᬠ¬á¬ »«¬áºá¡« ¡¿ªÑ:
-
- ç¡áτÑ¡¿Ñ æ¼δß½
-
- îÑ¡∞ΦÑ 0 buf1 ¼Ñ¡∞ΦÑ,τѼ buf2
-
-
- - 161 -
-
-
- 0 buf1 ¿ñÑ¡Γ¿τÑ¡ buf2
-
- ü«½∞ΦÑ 0 buf1 í«½∞ΦÑ,τѼ buf2
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ memcmp ó«ºóαáΘáÑΓ µÑ½«Ñ τ¿ß½«.
- æ¼. Γá¬ªÑ memccpy, memchr, memcpy, memset.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char first[100], second[100];
- int result;
- /* æ½ÑñπεΘ¿⌐ «»ÑαáΓ«α ßαáó¡¿óáÑΓ first[] ¿ second[] ¿
- ** «»αÑñѽ∩ÑΓ, τΓ« ¿º ¡¿σ í«½∞ΦÑ. àß½¿ »ÑαóδÑ 100
- ** íá⌐Γ«ó π¬áºá¡¡δσ íπΣÑα«ó ¿ñÑ¡Γ¿τ¡δ, Γ« «¡¿ ßτ¿Γá-
- ** εΓß∩ αáó¡δ¼¿ */
- result=memcmp(first,second,100);
-
-
- MEMCPY
-
- #include <memory.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- #include <string.h> Σπ¡¬µ¿¿; ¿ß»«½∞ºπÑΓ ½¿í«
- <string.h>, ½¿í« <memory.h>
- char memcpy (dest, src, cnt);
- char *dest; π¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ
- char *src; π¬áºáΓѽ∞ ¡á ¿ßσ«ñ¡δ⌐ íπΣÑα
- unsigned cnt; ¬«½¿τÑßΓó« ß¿¼ó«½«ó
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memcpy ¬«»¿απÑΓ cnt íá⌐Γ«ó ¿º src ó dest. àß½¿ ¡Ñ-
- ¬«Γ«αδÑ πτáßΓ¬¿ src ¿ dest »ÑαѬαδóáεΓß∩, memcpy úáαá¡Γ¿απÑΓ, τΓ«
- íá⌐Γδ ¿º »ÑαѬαδóáѼ«ú« πτáßΓ¬á, »α¿¡áñ½ÑªáΘ¿Ñ src, íπñπΓ ß¬«»¿-
- α«óá¡δ »ÑαÑñ »ÑαѺỿß∞ε.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ memcpy ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á dest.
- æ¼.Γá¬ªÑ memccpy, memchr, memcmp, memsct.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char source [200], destiination [200];
- .
- .
- .
- /* ÅÑαÑßδ½áεΓß∩ 200 íá⌐Γ«ó ¿º **source ó destination ** ¿
- ó«ºóαáΘáÑΓß∩ π¬áºáΓѽ∞ ¡á destination */
- memcpy (destination, source, 200);
-
- - 162 -
-
-
-
-
- MEMICMP
-
-
- #include <memory.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- #include <string.h> Σπ¡¬µ¿¿; ¿ß»«½∞ºπÑΓ ½¿í«
- <string.h>, ½¿í« <memory.h>
- int memicmp (buf1, buf2, cnt);
- char *buf1; »Ñαóδ⌐ íπΣÑα
- char *buf2; óΓ«α«⌐ íπΣÑα
- unsigned cnt; ¬«½¿τÑßΓó« ß¿¼ó«½«ó
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memicmp ½Ñ¬ß¿¬«úαáΣ¿τÑ߬¿ ßαáó¡¿óáÑΓ »ÑαóδÑ cnt
- íá⌐Γ«ó ¿º buf1 ¿ buf2 ó¡Ñ ºáó¿ß¿¼«ßΓ¿ «Γ Γ¿»á αÑú¿ßΓαá, Γ.Ñ. íπ¬-
- óδ óÑασ¡Ñú« ¿ ¡¿ª¡Ñú« αÑú¿ßΓα«ó ßτ¿ΓáεΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿. öπ¡¬µ¿∩
- memicmp ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, π¬áºδóáεΘÑÑ ß««Γ¡«ΦÑ¡¿Ñ buf1 ¿ buf2,
- á ¿¼Ñ¡¡«:
-
- éѽ¿τ¿¡á ç¡áτÑ¡¿Ñ
-
- ¼Ñ¡∞ΦÑ 0 buf1 ¼Ñ¡∞ΦÑ, τѼ buf2
-
- 0 buf1 ¿ñÑ¡Γ¿τ¡« buf2
-
- í«½∞ΦÑ 0 buf1 í«½∞ΦÑ, τѼ buf2
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ memicmp ó«ºóαáΘáÑΓ µÑ½«Ñ τ¿ß½«.
- æ¼.Γá¬ªÑ memccpy, memchr, memcmp, memcpy, memset.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char first[100], second [100];
- int result;
- strcpy (first,"Those, Who Will Not Learn from
- History");
- strcpy (second, "THOSE WHO WILL NOT LEARN FROM their
- mistakes");
- result = memicmp (first, second, 29);
- printf ("%d\n", result);
-
- ìá óδσ«ñÑ:
- 0
-
-
- MEMSET
-
- #include <memory.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- #include <string.h> Σπ¡¬µ¿¿; ¿ß»«½∞ºπÑΓ ½¿í«
- <string.h>, ½¿í« <memory.h>
-
- - 163 -
-
-
- char *memset (dest, c, cnt);
- char *dest; π¬áºáΓѽ∞ ¡á αѺπ½∞ΓáΓ
- int c; ß¿¼ó«½-ºá»«½¡¿Γѽ∞
- unsigned cnt; ¬«½¿τÑßΓó« ß¿¼ó«½«ó
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ memset ºá»«½¡∩ÑΓ »ÑαóδÑ cnt íá⌐Γ«ó íπΣÑαá dest ß¿¼-
- 󫽫¼ c.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ memset ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á íπΣÑα dest.
- æ¼.Γá¬ªÑ memccpy, memchr, memcmp, memcpy
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- char buffer [100];
- /* ºá»«½¡∩ÑΓ »ÑαóδÑ 100 íá⌐Γ«ó buffer
- ** ¡π½∩¼¿ */
- memset (buffer, '\0', 100);
-
-
- MKDIR
-
- #include <direct.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int mkdir(pathname);
- char *pathname; path-¿¼∩ ¡«ó«ú« ñ¿αÑ¬Γ«α¿∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ mkdir ß«ºñáÑΓ ¡«óδ⌐ ñ¿αÑ¬Γ«α¿⌐ ß ºáñá¡¡δ¼ pathname.
- é «ñ¡« ¿ Γ« ªÑ óαѼ∩ ¼«ªÑΓ íδΓ∞ ß«ºñá¡ Γ«½∞¬« «ñ¿¡ ñ¿αÑ¬Γ«α¿⌐,
- »«Γ«¼π τΓ« Γ«½∞¬« »«ß½Ññ¡∩∩ ¬«¼»«¡Ñ¡Γá pathname ¼«ªÑΓ ¡áºδóáΓ∞
- ¡«óδ⌐ ñ¿αÑ¬Γ«α¿⌐.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ mkdir ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ ß«ºñá¡ ¡«óδ⌐ ñ¿-
- αÑ¬Γ«α¿⌐. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ ¿
- errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
-
- ç¡áτÑ¡¿Ñ àú« ß¼δß½
-
- EACCES ä¿αÑ¬Γ«α¿⌐ ¡Ñ ß«ºñá¡. çáñá¡¡«Ñ ¿¼∩
- ∩ó½∩ÑΓß∩ ¿¼Ñ¡Ñ¼ ßπΘÑßΓóπεΘÑú« Σá⌐½á,
- ñ¿αÑ¬Γ«α¿∩, πßΓα«⌐ßΓóá.
-
- ENOENT Path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
-
- æ¼.Γá¬ªÑ chdir, rmdir.
-
-
- - 164 -
-
-
- Åα¿¼Ñα:
-
- #include <direct.h>
- int result;
- /* ß½ÑñπεΘ¿Ñ 2 «»ÑαáΓ«αá ß«ºñáεΓ 2 ¡«óδσ ñ¿αÑ¬Γ«α¿∩: **
- «ñ¿¡ - ó ¬«α¡Ñ ñ¿ß¬á b, óΓ«α«⌐ - ó »«ññ¿αÑ¬Γ«α¿¿ ** "tmp" ΓѬπΘÑ-
- ú« αáí«τÑú« ñ¿αÑ¬Γ«α¿∩ */
- result=mkdir("b:/tmp); /* ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡«
- ** Γá¬ªÑ "b:\\tmp" */
- result=mkdir("tmp/sub"); /* ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡«
- ** Γá¬ªÑ "tmp\\sub" */
-
-
-
- MKTEMP
-
- #imclude <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- char *mktemp(template);
- char *template; Φáí½«¡ ¿¼Ñ¡¿ Σá⌐½á
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ mktemp ß«ºñáÑΓ π¡¿¬á½∞¡«Ñ ¿¼∩ Σá⌐½á, ¼«ñ¿Σ¿µ¿απ∩
- ñá¡¡δ⌐ template. Çαúπ¼Ñ¡Γ template ¿¼ÑÑΓ Σ«α¼π:
-
- baseXXXXXX,
-
- úñÑ base ∩ó½∩ÑΓß∩ τáßΓ∞ε ¡«ó«ú« ¿¼Ñ¡¿ Σá⌐½á, »αÑñ½áúáѼ«ú«
- »«½∞º«óáΓѽѼ ¿ X...X ∩ó½∩εΓß∩ º¡á¬«¼ÑßΓἿ ñ½∩ τáßΓ¿, Σ«α¼¿απÑ-
- ¼«⌐ mktemp; mktemp ß«σαá¡∩ÑΓ base ¿ ºá¼Ñ¡∩ÑΓ ΦÑßΓ∞ ò á½Σáó¿Γ¡δ¼
- ß¿¼ó«½«¼, ß½ÑñπεΘ¿¼ ºá º¡áτÑ¡¿Ñ¼ ¿º 5 µ¿Σα. 5-µ¿Σα«ó«Ñ º¡áτÑ¡¿Ñ
- ∩ó½∩ÑΓß∩ π¡¿¬á½∞¡δ¼ ¡«¼Ñα«¼, ¿ñÑ¡Γ¿Σ¿µ¿απεΘ¿¼ óδºδóáѼδ⌐ »α«µÑßß.
- Åα¿ »Ñαó«¼ ó맮óÑ mktemp ß ºáñá¡¡δ¼ template á½Σáó¿Γ¡δ⌐ ß¿¼ó«½
- αáóÑ¡ ß¿¼ó«½π 0('0'). é »«ß½ÑñπεΘ¿σ ó맮óáσ ¿º Γ«ú« ªÑ ßἫú«
- »α«µÑßßá ß ΓѼ ªÑ ßá¼δ¼ template mktemp »α«óÑα∩ÑΓ, ¿ß»«½∞º«ó὿ß∞
- ½¿ αá¡ÑÑ ó«ºóαáΘÑ¡¡δÑ ¿¼Ñ¡á ñ½∩ ß«ºñá¡¿∩ Σá⌐½«ó. àß½¿ Σá⌐½á ß ºá-
- ñá¡δ¼ ¿¼Ñ¡Ñ¼ ¡Ñ ßπΘÑßΓóπÑΓ, mktemp ó«ºóαáΘáÑΓ φΓ« ¿¼∩. àß½¿ ñ½∩
- óßÑσ αá¡ÑÑ ó«ºóαáΘÑ¡¡δσ ¿¼Ñ¡ Σá⌐½δ ßπΘÑßΓóπεΓ, mktemp ß«ºñáÑΓ ¡«-
- ó«Ñ ¿¼∩, ºá¼Ñ¡∩∩ ó ¡Ñ¼ á½Σáó¿Γ¡δ⌐ ß¿¼ó«½ ß½ÑñπεΘÑ⌐ ñ«ßΓπ»¡«⌐ íπ¬-
- ó«⌐ ¡¿ª¡Ñú« αÑú¿ßΓαá.
- ìá»α¿¼Ñα, Ñß½¿ »Ñαó«Ñ ó«ºóαáΘÑ¡¡«Ñ ¿¼∩ í佫 t012345 ¿ φΓ«
- ¿¼∩ ¿ß»«½∞º«óὫß∞ ñ½∩ ß«ºñá¡¿∩ Σá⌐½á, Γ« ß½ÑñπεΘÑÑ ó«ºóαáΘáѼ«Ñ
- ¿¼∩ íπñÑΓ ta12345. Åα¿ ß«ºñá¡¿¿ ¡«óδσ ¿¼Ñ¡ mktemp ¿ß»«½∞ºπÑΓ '0'
- ¿ íπ¬óδ ¡¿ª¡Ñú« αÑú¿ßΓαá «Γ "a" ñ« "z".
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ mktemp ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ¼«ñ¿Σ¿µ¿α«óá¡¡δ⌐
- template. 髺óαáΘáÑ¼δ¼ º¡áτÑ¡¿Ñ¼ ∩ó½∩ÑΓß∩ NULL, Ñß½¿ áαúπ¼Ñ¡Γ
- template «íαẫóá¡ ¡ÑóÑα¡« ¿½¿ í«½∞ΦÑ ¡Ñ ¼«ªÑΓ íδΓ∞ ß«ºñá¡« π¡¿-
- ¬á½∞¡δσ ¿¼Ñ¡ ¿º ºáñá¡¡«ú« template.
- 漫Γα¿ Γá¬ªÑ fopen, getpid, open.
-
- çá¼Ñτá¡¿Ñ. öπ¡¬µ¿∩ mktemp úÑ¡Ñα¿απÑΓ π¡¿¬á½∞¡δÑ ¿¼Ñ¡á Σá⌐-
-
- - 165 -
-
-
- ½«ó, ¡« ¡Ñ ß«ºñáÑΓ ¿ ¡Ñ «Γ¬αδóáÑΓ Σá⌐½δ.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- char *template="fnXXXXXX";
- char *result;
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδºδóáÑΓ mktemp ñ½∩ ß«ºñá¡¿∩ ** π¡¿-
- ¬á½∞¡«ú« ¿¼Ñ¡¿ Σá⌐½á */
- result=mktemp(template);
- MODF
- #include <math.h>
- double modf(x,intptr);
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- double *intptr; π¬áºáΓѽ∞ ¡á σαá¡Ñ¡¿Ñ µÑ½«⌐ τáßΓ¿
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ modf αáºαδóáÑΓ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ x ¡á
- ñα«í¡πε ¿ µÑ½πε τáßΓ¿. 髺óαáΘáÑΓß∩ º¡á¬«óá∩ ñα«í¡á∩ τáßΓ∞ x. ûÑ-
- ½á∩ τáßΓ∞ σαá¡¿Γß∩ ó intptr ¬á¬ º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ modf ó«ºóαáΘáÑΓ º¡á¬«óπε ñα«í¡πε τáßΓ∞ x. 髺óαáΘá-
- Ѽ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼. Γá¬ªÑ frexp, ldexp.
-
- Åα¿¼Ñα:
-
- #include <math.h>
- double x,y,n;
- x = -14.87654321;
- y = modf(x,&n); /* y = -0.87654321, n = -14.0 */
-
-
- MOVEDATA
-
- #include <memory.h> ÆαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «í-
- #include <string.h> ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿, ¿ß»«½∞ºπÑΓ
- ½¿í« <string.h>, ½¿í«
- <memory.h>
-
- void movedata (srcseg, srcoff, destseg, destoff,
- nbytes);
- int srcseg; áñαÑß ¿ßσ«ñ¡«ú« ßÑú¼Ñ¡Γá
- int srcoff; ß¼ÑΘÑ¡¿Ñ ¿ßσ«ñ¡«ú« ßÑú¼Ñ¡Γá
- int destseg; áñαÑß αѺπ½∞Γ¿απεΘÑú« ßÑú¼Ñ¡Γá
- int destoff; ß¼ÑΘÑ¡¿Ñ αѺπ½∞Γ¿απεΘÑú« ßÑú-
- ¼Ñ¡Γá
- unsigned nbytes; ¬«½¿τÑßΓó« íá⌐Γ«ó
-
-
-
- - 166 -
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ movedata ¬«»¿απÑΓ nbytes íá⌐Γ«ó, ¡áτ¿¡á∩ ß ¿ßσ«ñ¡«-
- ú« áñαÑßá, «í«º¡áτÑ¡¡«ú« srcseg:srcoff, ó áñαÑß αѺπ½∞ΓáΓá, «í«º-
- ¡áτÑ¡¡δ⌐ destseg:destoff. öπ¡¬µ¿∩ movedata »αÑñ¡áº¡áτÑ¡á ñ½∩ »Ñ-
- αÑß佬¿ far-ñá¡¡δσ ó »α«úαá¼¼áσ ¼á½δσ ¿½¿ ßαÑñ¡¿σ ¼«ñѽÑ⌐, úñÑ
- áñαÑßá ßÑú¼Ñ¡Γ«ó ñá¡¡δσ ¡Ñ ¿ºóÑßΓ¡δ. é »α«úαá¼¼áσ í«½∞Φ¿σ ¼«ñѽÑ⌐
- ¼«ªÑΓ íδΓ∞ ¿ß»«½∞º«óá¡á Σπ¡¬µ¿∩ memcpy, ¬«úñá áñαÑßá ßÑú¼Ñ¡Γ«ó
- ¿ºóÑßΓ¡δ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
- æ¼. Γá¬ªÑ memcpy, segread, FP_SEG.
-
- çá¼Ñτá¡¿Ñ! ç¡áτÑ¡¿∩ ßÑú¼Ñ¡Γ«ó ñ½∩ áαúπ¼Ñ¡Γ«ó srcseg ¿
- destseg ¼«úπΓ íδΓ∞ »«½πτÑ¡δ ß »«¼«Θ∞ε »α¿¼Ñ¡Ñ¡¿∩ ½¿í« Σπ¡¬µ¿¿
- segread, ½¿í« ¼á¬α««»αÑñѽѡ¿∩ FR_SEG.
- öπ¡¬µ¿∩ movedata ¡Ñ «íαáíáΓδóáÑΓ óßÑ ß½πτá¿ »ÑαÑß佫¬ ß »Ñ-
- αѬαδΓ¿Ñ¼ ¬«ααÑ¬Γ¡« (»ÑαÑß佬¿ ß »ÑαѬαδΓ¿Ñ¼ »α«¿ßσ«ñ∩Γ Γ«úñá,
- ¬«úñá τáßΓ∞ αѺπ½∞Γ¿απεΘÑú« »«½∩ ∩ó½∩ÑΓß∩ ó φΓ«⌐ ªÑ «í½áßΓ¿ »á¼∩-
- Γ¿ τáßΓ∞ε ¿ßσ«ñ¡«ú«). ÅÑαÑß佬¿ ß »ÑαѬαδΓ¿Ñ¼ ¬«ααÑ¬Γ¡« «íαáíáΓδ-
- óáεΓß∩ Σπ¡¬µ¿Ñ⌐ memcpy.
-
- Åα¿¼Ñα:
-
- #include <memory.h>
- #include <dos.h>
- char far *src;
- char far *dest;
- .
- .
- .
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ »ÑαÑßδ½áεΓ 512
- ** íá⌐Γ«ó ñá¡¡δσ ¿º src ó dest. */
-
- movedata (FP_SEG (src), FPSEG(dest),
- FP_OFF(dest), 512);
-
-
- _ MSIZE
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- unsigned_msize(ptr);
- char *ptr; π¬áºáΓѽ∞ ¡á í½«¬ »á¼∩Γ¿
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _ msize ó«ºóαáΘáÑΓ αẼÑα í½«¬á »á¼∩Γ¿ (ó íá⌐Γáσ),
- αáß»αÑñѽѡ¡«ú« »«ßαÑñßΓó«¼ ó맮ó«ó calloc, malloc ¿½¿ realloc.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- éѽ¿τ¿¡á ó íá⌐Γáσ ó«ºóαáΘáÑΓß∩ ¬á¬ íѺº¡á¬«ó«Ñ µÑ½«Ñ.
- æ¼. Γá¬ªÑ calloc, _expand, malloc, realloc.
-
- - 167 -
-
-
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include <malloc.h>
- main()
- {
- long *oldptr;
- unsigned int newsize=64000;
-
- oldptr=(long*)malloc(10000*sizeof(long));
- printf("Size of memory block pointed to by
- oldptr=%u\n", _msize(oldptr));
-
- if (_expand(oldptr,newsize) != NULL)
- printf("expand was able to increase block to
- %u\n", _msize(oldptr));
- else
- printf("expand was able to increase block to
- only %u\n", _msize(oldptr));
- }
-
- _NFREE
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- void _nfree(ptr);
- char near *ptr; π¬áºáΓѽ∞ ¡á ºáσóáτÑ¡¡δ⌐ í½«¬
- »á¼∩Γ¿
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _nfree «ßó«í«ªñáÑΓ í½«¬ »á¼∩Γ¿. Çαúπ¼Ñ¡Γ ptr π¬áºδ-
- óáÑΓ ¡á αá¡ÑÑ ºáσóáτÑ¡¡δ⌐ í½«¬ »á¼∩Γ¿ »«ßαÑñßΓó«¼ _nmalloc.
- ù¿ß½«¼ «ßó«í«ªñÑ¡¡δσ íá⌐Γ«ó ∩ó½∩ÑΓß∩ τ¿ß½« íá⌐Γ«ó, «»αÑñÑ-
- ½Ñ¡¡δσ »α¿ ºáσóáΓÑ í½«¬á. Å«ß½Ñ ó맮óá «ßó«í«ñ¿óΦ¿Ñß∩ í½«¬¿ »α¿-
- ú«ñ¡δ ¬ αẼÑΘÑ¡¿ε.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
- æ¼. Γá¬ªÑ _nmalloc, free, malloc.
-
- çá¼Ñτá¡¿Ñ. Å«»δΓ¬á «ßó«í«ñ¿Γ∞ ¡ÑóÑα¡δ⌐ ptr (π¬áºáΓѽ∞ ¡Ñ
- ºáσóáΓδóáÑΓß∩ »«ßαÑñßΓó«¼ _nmalloc) ¼«ªÑΓ »α¿óÑßΓ¿ ¬ »«ß½ÑñπεΘѼπ
- ºáσóáΓπ ¿ óδºóáΓ∞ «Φ¿í¬π.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
- #include <stdio.h>
-
- char near *alloc;
-
- /* ºáσóáΓδóáÑΓ 100 íá⌐Γ«ó ¿ ºáΓѼ «ßó«í«ªñáÑΓ ¿σ */
-
- - 168 -
-
-
-
- /* »α«óÑα∩ÑΓ π¬áºáΓѽ∞ ¡á »αáó¿½∞¡«ßΓ∞: */
-
- if ((alloc=_nmalloc(100))==NULL)
- printf("unable to allocate memory\n");
- else {
- .
- .
- .
- /* «ßó«í«ªñáÑΓ »á¼∩Γ∞ ñ½∩ heap: */
-
- _nfree(alloc);
- }
-
- _NMALLOC
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- char near *_nmalloc(size);
- unsigned size; ¬«½¿τÑßΓó« íá⌐Γ«ó ó ºáσóáτÑ¡¡«¼
- í½«¬Ñ
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _nmalloc ó¡πΓα¿ π¼á½τ¿óáѼ«ú« ßÑú¼Ñ¡Γá ñá¡¡δσ ºáσ-
- óáΓδóáÑΓ í½«¬ »á¼∩Γ¿, »« ¬αá⌐¡Ñ⌐ ¼ÑαÑ ¡Ñ ¼Ñ¡∞ΦÑ, τѼ ¿º size íá⌐-
- Γ«ó. (ü½«¬ ¼«ªÑΓ íδΓ∞ í«½∞ΦÑ, τѼ ¿º size íá⌐Γ«ó,¡« »α¿¡áñ½ÑªáΘ¿σ
- »α«ßΓαá¡ßΓóπ, ¬«Γ«α«Ñ ΓαÑíπÑΓß∩ ñ½∩ óδαáó¡¿óá¡¿∩).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ _nmalloc ó«ºóαáΘáÑΓ near-π¬áºáΓѽ∞ ¡á char. é »á¼∩-
- Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úáαá¡Γ¿α«óá¡« óδ-
- αáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ »«½πτ¿Γ∞ π¬á-
- ºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«íαẫóáΓѽ∞ Γ¿-
- »á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
- 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ »α«ßΓαá¡ßΓó« ¡Ñ í佫 ºáσ-
- óáτÑ¡¡δ¼.
- æ¼. Γá¬ªÑ _nrfee, _msize, malloc, realloc.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
- int *intarray;
- /* ºáσóáΓδóáÑΓ »á¼∩Γ∞ ñ½∩ 20 µÑ½δσ */
- intarray=(int*)_nmalloc(20*sizeof(int));
-
- _NMSIZE
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- unsigned _nmsize(ptr);
- char near ptr; π¬áºáΓѽ∞ ¡á í½«¬ »á¼∩Γ¿
-
- - 169 -
-
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _nmsize ó«ºóαáΘáÑΓ αẼÑα í½«¬á »á¼∩Γ¿ ó íá⌐Γáσ,
- ºáσóáτÑ¡¡«ú« »«ßαÑñßΓó«¼ _nmalloc.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ _nmsize ó«ºóαáΘáÑΓ αẼÑα ó íá⌐Γáσ, ¬á¬ íѺº¡á¬«ó«Ñ
- µÑ½«Ñ.
- æ¼. Γá¬ªÑ _ffree, _fmalloc, _fmsize, malloc, _msize,
- _nfree, _nmalloc.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
-
- #include <stdio.h>
-
- main()
- {
- char near *stringarray;
-
- stringarray=_nmalloc(200*sizeof(char));
- if (stringarray != NULL)
- printf("%u bytes allocated\n",
- _nmsize(stringarray));
- else
- printf("Allocation request failed.\n");
- }
-
-
- ONEXIT
-
- #include <stdlib.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- onexit_t onexit(func); Γ¿» onexit_t, «»αÑñѽѡ¡δ⌐ ó
- <stdlib.h>
- onexit_t func;
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ onexit »ÑαÑñáÑΓ áñαÑß Σπ¡¬µ¿¿ (func), ¬«Γ«αá∩ íπñÑΓ
- óδ»«½¡Ñ¡á, Ñß½¿ »α«úαá¼¼á ¡«α¼á½∞¡« ºáóÑαΦ¿Γß∩. ôß»ÑΦ¡δÑ ó맮óδ
- onexit ß«ºñáεΓ ¡áí«α Σπ¡¬µ¿⌐, óδ»«½¡∩Ѽδ⌐ »« »αáó¿½π ¼áúế¡á -
- "»«ß½Ññ¡¿⌐ ºáΦѽ, »Ñαóδ⌐ óδΦѽ". Åα¿ »«¼«Θ¿ onexit ¼«úπΓ íδΓ∞
- ß«ºñá¡δ ¡áí«αδ ¡Ñ í«½ÑÑ τѼ ¿º 32 Σπ¡¬µ¿⌐; onexit ó«ºóαáΘáÑΓ
- º¡áτÑ¡¿Ñ NULL, Ñß½¿ τ¿ß½« Σπ¡¬µ¿⌐ ó ¡áí«αÑ »αÑóδΦáÑΓ 32. öπ¡¬µ¿¿,
- »ÑαÑñáóáѼδÑ ¬ onexit, ¡Ñ ¼«úπΓ ¿¼ÑΓ∞ »áαá¼ÑΓα«ó.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ onexit ó ß½πτáÑ πß»Ñσá ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á Σπ¡-
- ¬µ¿ε ¿ ó«ºóαáΘáÑΓ NULL, Ñß½¿ ¡Ñ «ßΓὫß∞ ¼ÑßΓá ñ½∩ σαá¡Ñ¡¿∩ π¬á-
- ºáΓѽ∩ ¡á Σπ¡¬µ¿ε.
-
- - 170 -
-
-
- æ¼.Γá¬ªÑ exit.
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
- main()
- {
- int fn1(), fn2(), fn3(), fn4();
- onexit(fn1);
- onexit(fn2);
- onexit(fn3);
- onexit(fn4);
- printf("This is executed first.\n");
- }
- int fn1()
- {
- printf("next.\n");
- }
- int fn2()
- {
- printf("executed");
- }
- int fn3()
- {
- printf("is");
- }
- int fn4()
- {
- printf("This");
- }
-
-
- ìá óδσ«ñÑ:
-
- This is executed first.
- This is executed next.
-
-
- OPEN
-
- #include <fcntl.h>
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿⌐.
- int open(pathname, oflag [[, pmode]]);
- char *pathname; path-¿¼∩ Σá⌐½á
- int oflag; ñ«ßΓπ»¡δ⌐ Γ¿» «»Ñαᵿ⌐
- int pmode; αáºαÑΦÑ¡¡δ⌐ Γ¿» ñ«ßΓπ»á.
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ open «Γ¬αδóáÑΓ Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »« path-¿¼Ñ¡¿, ¿
- »«ñú«Γáó½¿óáÑΓ Ñú« ¬ »«ß½ÑñπεΘѼπ τΓÑ¡¿ε ¿½¿ ºá»¿ß¿, τΓ« «»αÑñÑ-
- ½∩ÑΓß∩ »«ßαÑñßΓó«¼ oflag.
-
- - 171 -
-
-
- Çαúπ¼Ñ¡Γ oflag ∩ó½∩ÑΓß∩ µÑ½δ¼ óδαáªÑ¡¿Ñ¼, ß«ßΓ«∩Θ¿¼ ¿º ¬«¼-
- í¿¡áµ¿¿ «ñ¡«⌐ ¿½¿ í«½ÑÑ ¼á¡¿ΣÑßΓ¡δσ ¬«¡ßΓá¡Γ, «íΩ∩ó½Ñ¡¡δσ ó
- <fcntl.h>. àß½¿ ºáñá¡á í«½∞ΦÑ τѼ «ñ¡á ¬«¡ßΓá¡Γá, Γ«úñá «¡¿ «íΩ-
- Ññ¿¡∩εΓß∩ »α¿ »«¼«Θ¿ ½«ú¿τÑ߬«ú« «»ÑαáΓ«αá êïê (:).
-
- OFLAG çìÇùàìêà
-
- O_APPEND ô¬áºáΓѽ∞ ¡á Σá⌐½ »ÑαѼÑΘÑ¡ ó ¬«¡Ñµ
- Σá⌐½á »ÑαÑñ ¬áªñ«⌐ «»ÑαᵿÑ⌐ ºá»¿ß¿.
-
- O_CREAT ì«óδ⌐ Σá⌐½ ß«ºñá¡ ¿ «Γ¬αδΓ ñ½∩ ºá»¿ß¿;
- φΓ« ¡Ñ φΣΣÑ¬Γ¿ó¡«, Ñß½¿ ßπΘÑßΓóπÑΓ
- Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »« path-¿¼Ñ¡¿.
-
- O_EXCL 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ «Φ¿í¬¿, Ñß½¿
- ßπΘÑßΓóπÑΓ Σá⌐½, «»αÑñѽ∩Ѽδ⌐ »« path-
- ¿¼Ñ¡¿. Åα¿¼Ñ¡∩ÑΓß∩ Γ«½∞¬« ó¼ÑßΓÑ ß
- O_CREATE.
-
- O_RDONLY öá⌐½ «Γ¬αδΓ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩; Ñß½¿
- ºáñáÑΓß∩ φëà ӽáú, ¼«ªÑΓ íδΓ∞ óδíαá¡
- ½¿í« Σ½áú O_RDWR, ½¿í« O_WRONLY.
-
- O_RDWR öá⌐½ «Γ¬αδΓ «ñ¡«óαѼѡ¡« ñ½∩ τΓÑ¡¿∩
- ¿ ºá»¿ß¿; Ñß½¿ ºáñáÑΓß∩ φëà ӽáú,
- ¼«ªÑΓ íδΓ∞ óδíαá¡ ½¿í« Σ½áú O_RDONLY,
- ½¿í« O_WRONLY.
-
- O_TRUNC æπΘÑßΓóπεΘ¿⌐ Σá⌐½ «Γ¬αδΓ ¿ πßÑτÑ¡ ¬
- ñ½¿¡Ñ 0; φëà Σá⌐½ ñ«½ªÑ¡ ¿¼ÑΓ∞
- αáºαÑΦÑ¡¿Ñ ¡á ºá»¿ß∞. æ«ñÑন¼«Ñ Σá⌐½á
- π¡¿τΓ«ªáÑΓß∩.
-
- O_WRONLY öá⌐½ «Γ¬αδΓ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩; Ñß½¿
- ºáñá¡ φëà ӽáú, ñ«½ªÑ¡ íδΓ∞ ºáñá¡
- Γá¬ªÑ ½¿í« Σ½áú O_RDONLY, ½¿í« ORDWR.
-
- O_BINARY öá⌐½ «Γ¬αδΓ ó ñó«¿τ¡«¼ (¡Ñ Γαá¡ß½¿-
- α«óá¡¡«¼) αѪ¿¼Ñ. (æ¼. «»¿ßá¡¿Ñ ñó«-
- ¿τ¡«ú« αѪ¿¼á π Σπ¡¬µ¿¿ fopen).
-
- O_TEXT öá⌐½ «Γ¬αδΓ ó ΓѬßΓ«ó«¼ (Γαá¡ß½¿-
- απεΘѼ) αѪ¿¼Ñ. (æ¼. «»¿ßá¡¿Ñ ΓѬßΓ«-
- ó«ú« αѪ¿¼á π Σπ¡¬µ¿¿ fopen).
-
- çá¼Ñτá¡¿Ñ! O_TRUNC »«½¡«ßΓ∞ε π¡¿τΓ«ªáÑΓ ß«ñÑন¼«Ñ ßπΘÑßΓ-
- óπεΘÑú« Σá⌐½á; »«φΓ«¼π ¡πª¡« ó¡¿¼áΓѽ∞¡« ¿ß»«½∞º«óáΓ∞ φΓ𠬫¡ß-
- Γá¡Γπ.
- Çαúπ¼Ñ¡Γ pmode ΓαÑíπÑΓß∩ Γ«½∞¬« Γ«úñá, ¬«úñá «»αÑñѽѡá
- ¬«¡ßΓá¡Γá O_CREAT. àß½¿ Σá⌐½ ßπΘÑßΓóπÑΓ, pmode ¿ú¡«α¿απÑΓß∩. é
- »α«Γ¿ó¡«¼ ß½πτáÑ pmode «»αÑñѽ∩ÑΓ αáºαÑΦÑ¡¡δÑ Γ¿»δ ñ«ßΓπ»á ñ½∩
- Σá⌐½á, ¬«Γ«αδÑ πßΓá¡áó½¿óáεΓß∩ ó« óαѼ∩ »Ñαó«ú« ºá¬αδΓ¿∩ ¡«ó«ú«
- Σá⌐½á.
- Pmode - µÑ½«Ñ óδαáªÑ¡¿Ñ, ß«ñÑαªáΘÑÑ «ñ¡π ¿½¿ «íÑ ¼á¡¿ΣÑßΓ-
- ¡δÑ ¬«¡ßΓá¡Γδ S_IREAD, S_IWRITE, «íΩ∩ó½Ñ¡¡δÑ ó <sys\stat.h>. è«úñá
-
- - 172 -
-
-
- ºáñá¡δ «íÑ ¬«¡ßΓá¡Γδ, «¡¿ «íΩÑñ¿¡∩εΓß∩ ½«ú¿τÑ߬¿¼ «»ÑαáΓ«α«¼ êïê
- (:). ç¡áτÑ¡¿Ñ áαúπ¼Ñ¡Γá pmode »α¿ó«ñ¿Γß∩ ¡¿ªÑ.
-
- èÄìæÆÇìÆÇ àà æî¢æïÄéÄà çìÇùàìêà
-
- S_IWRITE αáºαÑΦáÑΓ ºá»¿ß∞.
-
- S_IREAD αáºαÑΦáÑΓ τΓÑ¡¿Ñ.
-
- S_IREAD|S_IWRITE αáºαÑΦáεΓ τΓÑ¡¿Ñ ¿ ºá»¿ß∞.
-
- àß½¿ ºá»¿ß∞ ¡Ñ αáºαÑΦÑ¡á, Σá⌐½ »αÑñ¡áº¡áτÑ¡ Γ«½∞¬« ñ½∩ τΓÑ-
- ¡¿∩. é MS DOS óßÑ Σá⌐½δ «Γ¬αδΓδ ñ½∩ τΓÑ¡¿∩; ñ½∩ ¡¿σ ¡Ñ 󫺼«ª¡«
- ºáñáΓ∞ αáºαÑΦÑ¡¿Ñ Γ«½∞¬« ¡á ºá»¿ß∞. Å«φΓ«¼π, ¼«ñѽ¿ S_IWRITE ¿
- S_IREAD: S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
- öπ¡¬µ¿∩ open »ÑαÑñ πßΓá¡«ó¬«⌐ αáºαÑΦÑ¡¡«ú« ñ«ßΓπ»á »α¿¬½á-
- ñδóáÑΓ ΓѬπΘπε ¼á߬π Σá⌐½á ¬ pmode. (Å«ñα«í¡« «í φΓ«¼ «»¿ßδóáÑΓß∩
- π Σπ¡¬µ¿¿ umask).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ handle ¡á ß«ºñá¡¡δ⌐ Σá⌐½. 髺óαáΘáÑ-
- ¼«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á «Φ¿í¬π; errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡«
- ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐.
-
- çìÇùàìêà àâÄ æî¢æï
-
- EACCES çáñá¡¡«Ñ path-¿¼∩ ∩ó½∩ÑΓß∩ ñ¿αÑ¬Γ«α¿Ñ¼;
- ¿½¿ ßñѽá¡á »«»δΓ¬á ºá»¿ßáΓ∞ ó Σá⌐½,
- «Γ¬αδΓδ⌐ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩, ¿½¿
- 󫺡¿¬½« sharing-¡áαπΦÑ¡¿Ñ. (Sharing-
- αѪ¿¼ Σá⌐½á ñ½∩ «»Ñαᵿ⌐ ¡Ñ ñ«»π߬áÑΓß∩.
- éÑαß¿¿ MS DOS 3.0 ¿ ßΓáαΦÑ).
-
- EEXIST ö½áú¿ O_CREAT ¿ O_EXCL «»αÑñѽѡδ, ¡«
- ¡áºóá¡¡δ⌐ Σá⌐½ óßÑúñá ßπΘÑßΓóπÑΓ.
-
- EMFILE äαπú¿Ñ handle-αδ Σá⌐½á ¡Ñ ñ«ßΓπ»¡δ, Γ.¬.
- ¼¡«ú« «Γ¬αδΓδσ Σá⌐½«ó.
-
- ENOENT öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
-
- æ¼. Γá¬ªÑ access, chmod, close, creat, dup, dup2, fopen,
- sopen, umask.
-
- Åα¿¼Ñα:
-
- #include <fcntl.h>
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <io.h>
- #include <stdlib.h>
- main ()
- {
- int fh1, fh2;
-
- - 173 -
-
-
- fh1 = open("data1", O_RDONLY);
- if (fh1 == -1)
- perror("open failed on input file");
- fh2 = open("data2", O_WRONLY:O_TRUNC:O_CREAT,
- S_IREAD:S_IWRITE);
- if (fh2 == -1)
- perror("open failed on output file");
- .
- .
- .
- }.
- fh1 = open("data1", O_RDONLY);
- if (fh1 == -1)
- perror("open failed on input file");.
-
-
-
- OUTP
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int outp(port, value);
- unsigned port; ¡«¼Ñα »«αΓá
- int value; óδó«ñ¿¼«Ñ º¡áτÑ¡¿Ñ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ outp ºá»¿ßδóáÑΓ º¡áτÑ¡¿Ñ value ó óδσ«ñ¡«⌐ »«αΓ, «»-
- αÑñѽѡ¡δ⌐ »« port. Çαúπ¼Ñ¡Γ port ¼«ªÑΓ íδΓ∞ ½εíδ¼ íѺº¡á¬«óδ¼
- µÑ½δ¼ ó »αÑñѽáσ «Γ 0 ñ« 65535, value ¼«ªÑΓ íδΓ∞ ½εíδ¼ µÑ½δ¼ ó
- »αÑñѽáσ «Γ 0 ñ« 255.
- æ¼.Γá¬ªÑ inp.
-
- Åα¿¼Ñα:
-
- #include <conio.h>
- int port, byte_val;
- .
- .
- .
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδó«ñ¿Γ ëà íá⌐Γ ¿º »«αΓá, ¡á ¬«Γ«αδ⌐
- πßΓá¡«ó½Ñ¡ port. */
- outp (port, byte_val);.
-
-
-