home *** CD-ROM | disk | FTP | other *** search
Text File | 1988-05-17 | 88.1 KB | 2,355 lines |
- - 54 -
-
-
-
- ùÇæÆ£ 2. ÄÅêæÇìêà öôìèûêë üêüïêÄÆàèê æê
-
-
- ABORT
-
- #include <process.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- #include <stdlib.h> ¿ß»«½∞ºπÑΓ ½¿í« <process.h>,
- ½¿í« <stdlib.h>
- void abort();
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ abort αáß»ÑτáΓδóáÑΓ ß««íΘÑ¡¿Ñ "Abnormal program
- termination" (áóáα¿⌐¡«Ñ (¡Ñ»αÑñó¿ñÑ¡¡«Ñ) ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ) ó
- stderr, ºáΓѼ «¬á¡τ¿óáÑΓ óδºóá¡¡δ⌐ »α«µÑßß, ó«ºóαáΘá∩ π»αáó½Ñ¡¿Ñ
- »α«µÑßßπ, ¬«Γ«αδ⌐ ¿¡¿µ¿¿α«óá½ óδºóá¡¡δ⌐ »α«µÑßß («íδτ¡« «»Ñαᵿ-
- «¡¡«⌐ ß¿ßΓѼÑ). öπ¡¬µ¿∩ abort ¡Ñ «í¡«ó½∩ÑΓ íπΣÑαδ »«Γ«¬«ó.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáÑΓß∩ ßΓáΓπß óδσ«ñá 3 ¬ parent-»α«µÑßßπ ½¿í« ¬ «»Ñ-
- αᵿ«¡¡«⌐ ß¿ßΓѼÑ.
- æ¼.Γá¬ªÑ execl, execle, execip, execlpe, execv, execve,
- execvp, execvpe, exit, _exit, signal, spawnl, spawnle, spawnlp,
- spawnlpe, spawnv, spawnve, spawnvp, spawnvpe.
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
-
- main(args, argv)
- int argc;
- char *argv[];
- {
- FILE *stream;
- if ((stream=fopen(argv[argc-1],"r"))==NULL) {
- frpintf(stderr,
- "%s couldn't open file %s\n", argv[0],
- argv[argc-1]);
- abort();
- }
-
- /* çá¼Ñτá¡¿Ñ. ê¼∩ »α«úαá¼¼δ σαá¡¿Γß∩ ó argv[0] Γ«½∞¬« ñ½∩
- óÑαß¿¿ MS DOS 3.0 ¿ ßΓáαΦ¿σ; ó αá¡¡¿σ óÑαß¿∩σ argv[0] ß«ñÑনΓ
- ßΓ᫬π "æ". */
-
- }
-
- ÄíαáºÑµ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿:
-
- update employ.dat
-
- ìá óδσ«ñÑ:
-
- - 55 -
-
-
-
- C:\BIN\UPDATE.EXE couldn't open file employ.dat.
-
- Abnormal program termination.
- (ìÑ»αÑñó¿ñÑ¡¡«Ñ ºáóÑαΦÑ¡¿Ñ »α«úαá¼¼δ).
-
- ABS
-
- #include <stdlib.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
- int abs(n);
- int n; µÑ½«Ñ º¡áτÑ¡¿Ñ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ abs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« µÑ½«ú«
- áαúπ¼Ñ¡Γá n.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ abs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ßó«Ñú« áαúπ¼Ñ¡-
- Γá. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼. Γá¬ªÑ cabs, fabs, labs.
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
-
- int x = -4, y;
-
- y = abs(x);
- printf("%d\t%d\n", x, y);.
-
- ìá óδσ«ñÑ:
-
- -4 4.
-
-
- ACCESS
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int access(pathname, mode);
- char *pathname; path-¿¼∩ Σá⌐½á ¿½¿ ñ¿αÑ¬Γ«α¿∩
- int mode; αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ»
-
- Ä»¿ßá¡¿Ñ.
-
- ä½∩ Σá⌐½«ó Σπ¡¬µ¿∩ access «»αÑñѽ∩ÑΓ, ßπΘÑßΓóπÑΓ ¿½¿ ¡ÑΓ
- «»αÑñѽѡ¡δ⌐ Σá⌐½, ¼«ªÑΓ ½¿ «¡ íδΓ∞ ñ«ßΓπ»Ñ¡ ó ºáñá¡¡«¼ αѪ¿¼Ñ
- mode. 髺¼«ª¡δÑ º¡áτÑ¡¿∩ mode ¿ ¿σ «í«º¡áτÑ¡¿∩ ó ó맮óáσ access
- »α¿óÑñÑ¡δ ¡¿ªÑ.
-
-
- - 56 -
-
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
- 06 Åα«óÑα¬á ¡á ñ«ßΓπ» »« τΓÑ¡¿ε ¿
- ºá»¿ß¿
-
- 04 Åα«óÑα¬á ¡á ñ«ßΓπ» »« τΓÑ¡¿∩
-
- 02 Åα«óÑα¬á ¡á ñ«ßΓπ» »« ºá»¿ß¿
-
- 00 Åα«óÑα¬á Γ«½∞¬« ¡á ßπΘÑßΓó«óá¡¿Ñ
-
-
- é MS DOS óßÑ ßπΘÑßΓóπεΘ¿Ñ Σá⌐½δ ¿¼ÑεΓ ñ«ßΓπ» »« τΓÑ¡¿ε, »«-
- φΓ«¼π αѪ¿¼δ 00 ¿ 04 óδαáíáΓδóáεΓ «ñ¿¡ ¿ ëà ªÑ αѺπ½∞ΓáΓ. ǡὫ-
- ú¿τ¡«, αѪ¿¼δ 06 ¿ 02 ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿, »«ß¬«½∞¬π ó MS DOS
- ñ«ßΓπ» »« ºá»¿ß¿ »αÑñ»«½áúáÑΓ ñ«ßΓπ» »« τΓÑ¡¿ε.
- ä½∩ ñ¿αÑ¬Γ«α¿Ñó access «»αÑñѽ∩ÑΓ, ßπΘÑßΓóπεΓ ¿½¿ ¡ÑΓ ºá-
- ñá¡¡δÑ ñ¿αÑ¬Γ«α¿¿; »«ñ π»αáó½Ñ¡¿Ñ¼ MS DOS óßÑ ñ¿αÑ¬Γ«α¿¿ ¿¼ÑεΓ
- ñ«ßΓπ» »« τΓÑ¡¿ε ¿ ºá»¿ß¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ access ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ Σá⌐½ ¿¼ÑÑΓ ºá-
- ñá¡¡δ⌐ αѪ¿¼ mode. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «
- Γ«¼, τΓ« ¡áºóá¡¡δ⌐ Σá⌐½ ¡Ñ ßπΘÑßΓóπÑΓ ¿½¿ ¡Ññ«ßΓπ»Ñ¡ ó ºáñá¡¡«¼
- mode, ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
- EACCES ä«ßΓπ» ºá»αÑΘÑ¡; πßΓá¡«ó½Ñ¡¡δ⌐ ßΓáΓπß
- ñ½∩ Σá⌐½á ¡Ñ ñ«»π߬áÑΓ ºáñá¡¡«ú« ñ«-
- ßΓπ»á
-
- ENOENT öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«
-
-
- æ¼.Γá¬ªÑ chmod, fstat, open, stat.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <fcntl.h>
-
- int fh;
- .
- .
- .
- /* »α«óÑα¬á ñ«ßΓπ»á »« ºá»¿ß¿ */
- if ((access("data",2))==-1 {
- perror("data file not writable");
- exit(1);
- }
-
- else
- fh=open("data", O_WRONLY);
-
-
- - 57 -
-
-
-
- ACOS
-
- #include <math.h>
-
- double acos(x);
- double x;
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ acos ó«ºóαaΘaÑΓ aᬬ«ß¿¡πß x ó ¿¡ΓÑαóa½Ñ «Γ 0 ñ« n.
- ç¡aτÑ¡¿Ñ x ñ«½ª¡« íδΓ∞ ¼Ñªñπ -1 ¿ 1.
-
- 髺óαaΘaѼ«Ñ º¡aτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ acos ó«ºóαaΘaÑΓ αѺπ½∞ΓaΓ aᬬ«ß¿¡πßa. àß½¿ x ¼Ñ¡∞-
- ΦÑ -1 ¿½¿ í«½∞ΦÑ 1, acos πßΓa¡aó½¿óaÑΓ errno ó EDOM, »ÑτaΓaÑΓ ß«-
- «íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαaΘaÑΓ 0.
- Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿º¼Ñ¡Ñ¡¿¿
- »α«µÑñπαδ matherr.
- æ¼.Γa¬ªÑ asin, atan, atan2, cos, matherr, sin, tan.
-
- Åα¿¼Ñα:
-
- é ß½ÑñπεΘѼ »α¿¼ÑαÑ »α«úαa¼¼a óδñaÑΓ »«ñ߬aº¬¿ ñ½∩ óó«ña ñ«
- ΓÑσ »«α, »«¬a óóÑñÑ¡¡«Ñ º¡aτÑ¡¿Ñ ¡Ñ íπñÑΓ ó ¿¡ΓÑαóa½Ñ «Γ -1 ñ« 1.
-
- #include <math.h>
-
- int errno;
-
- main()
- {
- float x,y;
-
- for (errno=EDOM;errno==EDOM;y=acos(x)) {
- printf("Cosine=");
- scanf("%f",&x);
- errno = 0;
- }
- printf("Arc cosine of %f = %f\n",x,y);
- }
-
- ÄíαaºÑµ óδó«ña:
-
- Cosine = 3
- acos: DOMAIN error
- Cosine = -1.0
- Arc cosine of -1.000000 = 3.141593
-
-
- ALLOCA
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- - 58 -
-
-
-
- char *alloca(size);
- unsigned size; ºáσóáτÑ¡¡δÑ íá⌐Γδ ¿º ßΓѬá
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαá alloca ºáσóáΓδóáÑΓ íá⌐Γδ size ¿º ßΓÑ¬á »α«úαá¼¼δ.
- çáσóáτÑ¡¡«Ñ »α«ßΓαá¡ßΓó« áóΓ«¼áΓ¿τÑ߬¿ «ßó«í«ªñáÑΓß∩ »α¿ óδσ«ñÑ
- ¿º Σπ¡¬µ¿¿, óδºóáóΦÑ⌐ alloca.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- Åα«µÑñπαá alloca ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ char ¡á ºáσóáτÑ¡¡«Ñ
- »α«ßΓαá¡ßΓó«.
- é »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
- αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ
- »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«í-
- αẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩. 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ
- NULL, Ñß½¿ »α«ßΓαá¡ßΓó« ¡Ñ í佫 ºáσóáτÑ¡«.
- æ¼.Γá¬ªÑ calloc, malloc, realloc.
-
- ÅαÑñπ»αѪñÑ¡¿Ñ. ç¡áτÑ¡¿Ñ π¬áºáΓѽ∩, ó«ºóαáΘáѼ«ú« »α«µÑñπ-
- α«⌐ alloca, ¡Ñ ¼«ªÑΓ íδΓ∞ áαúπ¼Ñ¡Γ«¼ ñ½∩ free. Æá¬ ¬á¬ alloca «í-
- αáíáΓδóáÑΓ ßΓѬ, «¡á ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ Γ«½∞¬« ó »α«ßΓδσ «»Ñ-
- αáΓ«αáσ óδñѽѡ¿∩ ¿ ¡Ñ ñ«½ª¡á ¿ß»«½∞º«óáΓ∞ß∩ ó óδαáªÑ¡¿∩σ-áαúπ-
- ¼Ñ¡Γáσ Σπ¡¬µ¿⌐.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
- int *intarray;
-
- /* ºáσóáΓδóáÑΓ »á¼∩Γ∞ ó ßΓÑ¬Ñ ñ½∩ 10 µÑ½δσ */
-
- intarray=(int*)alloca(10*sizeof(int));
-
-
- ASCTIME
-
- #include <time.h>
-
- char *asctime(time);
- struct tm *time; π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ,
- «íΩ∩ó½Ñ¡¡πε ó <time.h>
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ asctime »αÑ«íαáºπÑΓ óαѼ∩, σαá¡¿¼«Ñ ¬á¬ ßΓαπ¬Γπαá,
- ó ß¿¼ó«½∞¡πε ßΓ᫬π. ç¡áτÑ¡¿Ñ time «íδτ¡« »«½πτáÑΓß∩ ¿º ó맮óá
- gmtime ¿½¿ localtime, ¬«Γ«αδÑ ó«ºóαáΘáεΓ π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ
- tm, «íΩ∩ó½Ñ¡¡πε ó <time.h> (c¼. gmtime ñ½∩ «»¿ßá¡¿∩ »«½Ñ⌐ ßΓαπ¬-
- Γπαδ tm). ÉѺπ½∞Γ¿απεΘá∩ ßΓ᫬á, óδαáí«Γá¡¡á∩ asctime, ß«ñÑনΓ
- 26 ß¿¼ó«½«ó ¿ ¿¼ÑÑΓ Σ«α¼π, »α¿óÑñÑ¡¡πε ¡¿ªÑ ó »α¿¼ÑαÑ:
-
- Mon Jan 02 02:03:55 1980\n\0
-
- - 59 -
-
-
-
- êß»«½∞ºπÑΓß∩ 24 τáßá. éßÑ »«½∩ ¿¼ÑεΓ »«ßΓ«∩¡¡πε Φ¿α¿¡π.
- æ¿¼ó«½ ¡«ó«⌐ ßΓ᫬¿ ('\n') ¿ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0') ºá¡¿¼áεΓ ñóÑ
- »«ß½Ññ¡¿Ñ »«º¿µ¿¿ ó ßΓ᫬Ñ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ asctime ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ß¿¼ó«½∞¡πε ßΓ᫬π
- αѺπ½∞ΓáΓá. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼.Γá¬ªÑ ctime, ftime, gmtime, localtime, time, tzset.
-
- çá¼Ñτá¡¿Ñ. öπ¡¬µ¿¿ asctime ¿ ctime ¿ß»«½∞ºπεΓ «ñ¿¡ ¿ ëà ªÑ
- ßΓáΓ¿ßΓ¿τÑ߬¿ ºáσóáτÑ¡¡δ⌐ íπΣÑα ñ½∩ σαá¡Ñ¡¿∩ ó ¡Ñ¼ ßΓ᫬¿ αѺπ½∞-
- ΓáΓá. èáªñδ⌐ ó맮ó «ñ¡«⌐ ¿º φΓ¿σ »α«µÑñπα π¡¿τΓ«ªáÑΓ αѺπ½∞ΓáΓ
- »αÑñδñπΘÑú« ó맮óá.
-
- Åα¿¼Ñα:
-
- #include <time.h>
- #include <stdio.h>
-
- struct tm *newtime;
- long ltime;
- .
- .
- .
- time(<ime); /*óº∩Γ∞ óαѼ∩ ó ßѬπ¡ñáσ*/
- newtime=localtime(<ime); /*»αÑ«íαẫóáΓ∞ ¬ ßΓαπ¬ΓπαÑ
- tm ¿ ¡á»ÑτáΓáΓ∞ ¼ÑßΓ¡«Ñ
- óαѼ∩ ó ó¿ñÑ ßΓ᫬¿*/
- printf("the current date and time are %s\n",
- asctime(newtime));
-
-
- ASIN
-
- #include <math.h>
-
- double asin(x);
- double x;
-
- Ä»¿ßa¡¿Ñ.
-
- öπ¡¬µ¿∩ asin óδτ¿ß½∩ÑΓ áα¬ß¿¡πß x ó ¿¡ΓÑαóá½Ñ -n/2 ñ« n/2.
- ç¡áτÑ¡¿Ñ x ñ«½ª¡« íδΓ∞ ¼Ñªñπ -1 ¿ 1.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ asin ó«ºóαáΘáÑΓ αѺπ½∞ΓáΓ áα¬ß¿¡πßá. àß½¿ x ¼Ñ¡∞ΦÑ
- -1 ¿½¿ í«½∞ΦÑ 1, asin πßΓá¡áó½¿óáÑΓ errno ó EDOM, »ÑτáΓáÑΓ ß««í-
- ΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαáΘáÑΓ 0.
- Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿º¼Ñ¡Ñ¡¿¿
- »α«µÑñπαδ matherr.
- æ¼.Γa¬ªÑ acos, atan, atan2, cos, matherr, sin, tan.
-
-
- - 60 -
-
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- int errno;
-
- main()
-
- {
- float x,y;
- for (errno=EDOM; errno==EDOM; y=asin(x)) {
- printf("Sine=");
- scanf("%f", &x);
- errno = 0;
- }
- printf("Arc sine of %f\n",x,y);
- }
-
- ìá óδσ«ñÑ:
-
- Sine = -1.001
- asin: DOMAIN error
- Sine = -1
- Arc sine of -1.000000=-1.570796
-
-
- ASSERT
-
- #include <assert.h>
-
- void assert(expression);
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαá assert »ÑτáΓáÑΓ ñ¿áú¡«ßΓ¿τÑ߬«Ñ ß««íΘÑ¡¿Ñ ¿ ºá-
- óÑαΦáÑΓ óδºóá¡¡δ⌐ »α«µÑßß, Ñß½¿ expression ½«ª¡«, 0. ä¿áú¡«ßΓ¿-
- τÑ߬«Ñ ß««íΘÑ¡¿Ñ ¿¼ÑÑΓ Σ«α¼π:
-
- Assertion failed: file <filename>, line <linenumber>,
-
- úñÑ filename - ¿¼∩ ¿ßσ«ñ¡«ú« Σá⌐½á, linenumber - ¡«¼Ñα ßΓ᫬¿,
- ¬«Γ«αá∩ «Φ¿í«τ¡á.
- àß½¿ expression ¿ßΓ¿¡¡« (¡Ñ¡π½Ñó«Ñ), ¡¿¬á¬«ú« ñÑ⌐ßΓó¿∩ ¡Ñ
- óδ»«½¡∩ÑΓß∩.
- Åα«µÑñπαá assert «íδτ¡« ¿ß»«½∞ºπÑΓß∩ ñ½∩ «í¡áαπªÑ¡¿∩ ½«ú¿-
- τÑ߬¿σ «Φ¿í«¬ ó »α«úαá¼¼Ñ. éδαáªÑ¡¿Ñ expression ñ«½ª¡« íδΓ∞ ºáñá-
- ¡« Γᬿ¼ «íαẫ¼, τΓ«íδ «¡« í佫 ¿ßΓ¿¡¡δ¼, Ñß½¿ »α«úαá¼¼á óδ»«½-
- ¡∩ÑΓß∩ ¬á¬ ¡á¼ÑτÑ¡«. Å«ß½Ñ Γ«ú« ¬á¬ «Γ½áªÑ¡á »α«úαá¼¼á, ¼«ªÑΓ
- íδΓ∞ ¿ß»«½∞º«óᡠ߻ѵ¿á½∞¡δ⌐ "no debug" ¿ñÑ¡Γ¿Σ¿¬áΓ«α NDEBUG ñ½∩
- πñá½Ñ¡¿∩ ó맮ó«ó assert ¿º »α«úαá¼¼δ. àß½¿ NDEBUG «»αÑñѽѡ (½ε-
- íδ¼ º¡áτÑ¡¿Ñ¼) «»µ¿Ñ⌐ ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ /D ¿½¿ ß ñ¿αÑ¬Γ¿ó«⌐
- #define, »αÑ»α«µÑßß«α ∩ºδ¬á æ¿ πñá½∩ÑΓ óßÑ ó맮óδ assert ¿º ¿ß-
- σ«ñ¡«⌐ »α«úαá¼¼δ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- - 61 -
-
-
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
-
- çá¼Ñτá¡¿Ñ. Åα«µÑñπαá assert αÑ὿º«óá¡á ¬á¬ ¼á¬α«.
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include <assert.h>
-
- analyse_string (string)
- char *string;
-
- {
- /* »α«óÑα¬á ßΓ᫬¿ »ÑαÑñ «íαáí«Γ¬«⌐ */
-
- assert (string != NULL); /* ¡Ñ ¼«ªÑΓ íδΓ∞ NULL,
- ºñÑß∞ ñ«½ª¡á íδΓ∞
- ßΓ᫬á */
- assert (*string != '\0'); /* ¡Ñ ¼«ªÑΓ íδΓ∞
- »πßΓ«⌐ */
- .
- .
- .
- }.
-
-
- ATAN - ATAN2
-
- #include <math.h>
-
- double atan(x); óδτ¿ß½∩ÑΓ áα¬Γá¡úÑ¡ß x
- double x;
-
- double atan2(y,x); óδτ¿ß½∩ÑΓ áα¬Γá¡úÑ¡ß y/x
- double x;
- double y;
-
- Ä»¿ßá¡¿Ñ.
-
- ÄíÑ Σπ¡¬µ¿¿ atan ¿ atan2 ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ áα¬Γá¡úÑ¡ßá.
- àß½¿ «íá áαúπ¼Ñ¡Γá atan2 αáó¡δ 0, Σπ¡¬µ¿∩ πßΓá¡áó½¿óáÑΓ errno ó
- EDOM, »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿ ó«ºóαáΘáÑΓ
- 0.
- Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿ß»«½∞-
- º«óa¡¿¿ »α«µÑñπαδ matherr.
- æ¼.Γa¬ªÑ acos, asin, cos, matherr, sin, tan.
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- printf("%.7f\n", atan(1.0)); /* n/4 */
- printf("%.7f\n", atan2(-1.0,1.0)); /* -n/4 */
-
-
- - 62 -
-
-
- ìá óδσ«ñÑ:
-
- 0.7853982
- -0.7853982
-
-
- ATOF-ATOL
-
- #include <match.h> êß»«½∞ºπÑΓ ½¿í« <match.h>,
- #include <stdlib.h> ½¿í« <stdlib.h>.
-
- double atof (string); »αÑ«íαáºπÑΓ ßΓ᫬π string ó
- double
-
- char *string ßΓ᫬á, »«ñ½ÑªáΘá∩ »αÑ«íαá-
- º«óá¡¿ε
- int atoi (string) »αÑ«íαáºπÑΓ ßΓ᫬π string ó
- int
-
- long atol (string) »αÑ«íαáºπÑΓ ßΓ᫬π string ó
- long
-
- char *string ßΓ᫬á, »«ñ½ÑªáΘá∩ »αÑ«íαá-
- º«óá¡¿ε
-
- Ä»¿ßá¡¿Ñ.
-
- ¥Γ¿ Σπ¡¬µ¿¿ »αÑ«íαáºπεΓ ß¿¼ó«½∞¡πε ßΓ᫬π ó º¡áτÑ¡¿Ñ ß »½á-
- óáεΘÑ⌐ Γ«τ¬«⌐ ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿ (atof), ó µÑ½«Ñ º¡áτÑ¡¿Ñ (atoi)
- ¿½¿ ó ñ½¿¡¡«Ñ µÑ½«Ñ º¡áτÑ¡¿Ñ (atol).
- êßσ«ñ¡á∩ ßΓ᫬á string »αÑñßΓáó½∩ÑΓ ß«í«⌐ »«ß½Ññ«óáΓѽ∞-
- ¡«ßΓ∞ ß¿¼ó«½«ó, ¬«Γ«αδÑ ¼«úπΓ íδΓ∞ ¿¡ΓÑα»αÑΓ¿α«óá¡δ ¬á¬ τ¿ß½«ó«Ñ
- º¡áτÑ¡¿Ñ «»αÑñѽѡ¡«ú« Γ¿»á.
- öπ¡¬µ¿∩ »αѬαáΘáÑΓ τΓÑ¡¿Ñ ¿ßσ«ñ¡«⌐ ßΓ᫬¿ ¬á¬ Γ«½∞¬« »«∩-
- ó¿Γß∩ »Ñαóδ⌐ ß¿¼ó«½, ¬«Γ«αδ⌐ ¡Ñ ¼«ªÑΓ íδΓ∞ ó«ß»α¿¡∩Γ ¬á¬ τáßΓ∞
- τ¿ß½á (¿¼ ¼«ªÑΓ íδΓ∞ NULL-ß¿¼ó«½, ºáóÑαΦáεΘ¿⌐ ßΓ᫬π).
- öπ¡¬µ¿∩ atof »αÑñ»«½áúáÑΓ, τΓ« ßΓ᫬á string ¿¼ÑÑΓ ß½Ññπε-
- Θπε Σ«α¼π:
-
- [whitespace][sign][digits][{d|D|E}[sign]digits] ,
-
- úñÑ [whitespase] ß«ßΓ«¿Γ ¿º »α«íѽ«ó ¿/¿½¿ º¡á¬«ó Γáíπ½∩µ¿¿,
- ¬«Γ«αδÑ ¿ú¡«α¿απεΓß∩; [sign] «º¡áτáÑΓ "+" ¿½¿ "-"; [digits] -
- - «ñ¡á ¿½¿ ¡Ñ߬«½∞¬« ñÑß∩Γ¿τ¡δσ µ¿Σα. àß½¿ »ÑαÑñ ñÑß∩Γ¿τ¡«⌐ Γ«τ-
- ¬«⌐ ¡ÑΓ µ¿Σα, Γ« σ«Γ∩ íδ «ñ¡á µ¿Σαá ñ«½ª¡á ßΓ«∩Γ∞ »«ß½Ñ ¡ÑÑ. äÑ-
- ß∩Γ¿τ¡δÑ µ¿Σαδ ¼«úπΓ ß½Ññ«óáΓ∞ ºá »«¬áºáΓѽѼ ßΓѻѡ¿, ¬«Γ«αδ⌐
- ß«ßΓ«¿Γ ¿º íπ¬óδ (d,D,e ¿½¿ E) ¿ ñÑß∩Γ¿τ¡«ú« µÑ½«ú« ß« º¡á¬«¼.
- öπ¡¬µ¿¿ atoi ¿ atol ¡Ñ «íαáíáΓδóáεΓ ñÑß∩Γ¿τ¡δÑ Γ«τ¬¿ ¿½¿
- »«¬áºáΓѽ¿ ßΓѻѡ¿. Çαúπ¼Ñ¡Γ string ñ½∩ φΓ¿σ Σπ¡¬µ¿⌐ ¿¼ÑÑΓ ó¿ñ:
-
- [whitespace][sign]digits ,
-
- úñÑ whitespace, sign, digits «í«º¡áτáεΓ Γ« ªÑ, τΓ« ¿ ñ½∩ atof.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- - 63 -
-
-
-
- èáªñá∩ ¿º Σπ¡¬µ¿⌐ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ Γ¿»á double, int ¿½¿
- long, »«½πτáѼ«Ñ ó αѺπ½∞ΓáΓÑ ¿¡ΓÑα»αÑΓᵿ¿ óσ«ñ¡δσ ß¿¼ó«½«ó ¬á¬
- τ¿ßѽ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ αáó¡« 0 (0L ñ½∩ atol), Ñß½¿ óσ«ñ ¡Ñ
- ¼«ªÑΓ íδΓ∞ »αÑ«íαẫóá¡ ó º¡áτÑ¡¿Ñ ñá¡¡«ú« Γ¿»á. 髺óαáΘáѼ«Ñ
- º¡áτÑ¡¿Ñ ¡Ñ «»αÑñѽѡ« ó ß½πτáÑ »ÑαÑ»«½¡Ñ¡¿∩.
- æ¼. Γá¬ªÑ ecvt, fcvt, gcvt.
-
- Åα¿¼Ñα:
-
- æ½ÑñπεΘ¿Ñ »α¿¼Ñαδ »«¬áºδóáεΓ, ¬á¬ τ¿ß½á, ºá»¿ßá¡¡δÑ ó ó¿ñÑ
- ßΓ᫬, ¼«úπΓ íδΓ∞ »αÑ«íαẫóá¡δ ó τ¿ß½«óδÑ º¡áτÑ¡¿∩ »α¿ ¿ß»«½∞º«-
- óá¡¿¿ Σπ¡¬µ¿⌐ atof, atoi, atol:
-
- #include <math.h>
-
- extern long atol (\ );
- main (\ )
- {
- char *s;
- double x;
- int i;
- long l;
-
- s=" -2309.12E-15";
- x=atof(s);
- printf("%e\t",x);
-
- s="7.8912654773d210";
- x=atof(s);
- printf("%e\t",x);
-
- s="-9885";
- i=atoi(s);
- printf("%d\t",i);
-
- s="98854 dollars";
- l=atol(s);
- printf("%ld\n",l);
- }
-
- BDOS
-
- #include <dos.h>
-
- int bdos(dosfn, dosdx, dosal);
- int dosfn; ¡«¼Ñα Σπ¡¬µ¿¿
- unsigned int dosdx; º¡áτÑ¡¿Ñ αÑú¿ßΓαá DX
- unsigned int dosal; º¡áτÑ¡¿Ñ αÑú¿ßΓαá AL
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ bdos óδ»«½¡∩ÑΓ ß¿ßΓѼ¡δ⌐ ó맮ó MS DOS, ¡«¼Ñα ¬«Γ«-
-
- - 64 -
-
-
- α«ú« «»αÑñѽѡ ó dosfn, »«ß½Ñ αẼÑΘÑ¡¿∩ ß««ΓóÑΓßΓóÑ¡¡« ó αÑú¿ßΓ-
- αáσ DX ¿ AL º¡áτÑ¡¿⌐ dosdx ¿ dosal. öπ¡¬µ¿∩ bdos óδ»«½¡∩ÑΓ ¬«¼á¡-
- ñπ INT 21H ñ½∩ «ßπΘÑßΓó½Ñ¡¿∩ ß¿ßΓѼ¡«ú« ó맮óá.
- öπ¡¬µ¿∩ bdos ºáñáÑΓß∩ ñ½∩ ¿ß»«½∞º«óá¡¿∩ »α¿ ó맮óáσ
- DOS-ß¿ßΓѼ¡δσ ó맮ó«ó, ¬«Γ«αδÑ ¡Ñ »α¿¡¿¼áεΓ áαúπ¼Ñ¡Γ«ó ¿½¿ Γ«½∞-
- ¬« »α¿¡¿¼áεΓ ¿σ ó αÑú¿ßΓαδ DX(DH,DL) ¿/¿½¿ AL.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ bdos ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá AX, ºá»«¼¡Ñ¡¡«ú«
- ß¿ßΓѼ¡δ¼ ó맮ó«¼.
- æ¼.Γá¬ªÑ intdos, intdosx.
-
- çá¼Ñτá¡¿Ñ. ¥Γ«Γ ó맮ó ¡Ñ ¼«ªÑΓ ¿ß»«½∞º«óáΓ∞ß∩ ñ½∩ «ßπΘÑßΓó-
- ½Ñ¡¿∩ ß¿ßΓѼ¡δσ ó맮ó«ó, ó ¬«Γ«αδσ π¬áºδóáεΓß∩ «Φ¿í¬¿ »«ßαÑñßΓó«¼
- πßΓá¡«ó¬¿ Σ½áúá »ÑαÑ¡«ßá. Æ.¬. æ¿-»α«úαá¼¼δ ¡Ñ ¿¼ÑεΓ ñ«ßΓπ»á ¬
- φΓ«¼π Σ½áúπ, ßΓáΓπß ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡Ñ ¼«ªÑΓ íδΓ∞ «»αÑñÑ-
- ½Ñ¡. é φΓ«¼ ß½πτáÑ ¿ß»«½∞ºπÑΓß∩ Σπ¡¬µ¿∩ intdos.
-
- Åα¿¼Ñα:
-
- é ß½ÑñπεΘѼ »α¿¼ÑαÑ óδó«ñ¿Γß∩ »«ñ߬Ậá 9 Σπ¡¬µ¿Ñ⌐ MS DOS
- (óδó«ñ ßΓ᫬¿). ū߬«½∞¬π º¡áτÑ¡¿Ñ αÑú¿ßΓαá AL ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«í-
- σ«ñ¿¼δ¼, Γ« »ÑαÑñáÑΓß∩ 0. ¥Γ«Γ »α¿¼Ñα αáí«ΓáÑΓ »αáó¿½∞¡« Γ«½∞¬«
- ñ½∩ ¼á½«⌐ ¿ ßαÑñ¡Ñ⌐ ¼«ñѽÑ⌐ »á¼∩Γ¿, Γᬠ¬á¬ bdos ¡Ñ ¼Ñ¡∩ÑΓ º¡áτÑ-
- ¡¿∩ ßÑú¼Ñ¡Γ«ó αÑú¿ßΓα«ó.
-
- #include <dos.h>
-
- char *buffer = "Enter file name :$";
-
- /* AL ¡Ñ ∩ó½∩ÑΓß∩ ¡Ñ«íσ«ñ¿¼δ¼, »«φΓ«¼π »ÑαÑñáÑΓß∩ 0 */
-
- bdos(9,(unsigned)buffer,0);
-
- BESSEL
-
- #include <math.h>
-
- double j0(x);
-
- double j1(x);
-
- double jn(n,x);
-
- double y0(x);
-
- double y1(x);
-
- double yn(n,x);
-
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
- int n; µÑ½δ⌐ »«α∩ñ«¬
-
-
- - 65 -
-
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαδ j0, j1, jn óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« Σπ¡¬µ¿¿ üÑß-
- ßѽ∩ »Ñαó«⌐ ßΓѻѡ¿ »«α∩ñ¬á - 0, 1 ¿ n.
- Åα«µÑñπαδ y0, y1, yn óδτ¿ß½∩εΓ ß««ΓóÑΓßΓóÑ¡¡« Σπ¡¬µ¿¿ üÑß-
- ßѽ∩ óΓ«α«⌐ ßΓѻѡ¿ »«α∩ñ¬á - 0,1 ¿ n. Çαúπ¼Ñ¡Γ x ñ«½ªÑ¡ íδΓ∞ »«-
- ½«ª¿Γѽ∞¡δ¼.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ αѺπ½∞ΓáΓ Σπ¡¬µ¿⌐ üÑßßѽ∩ ñ½∩ x. àß-
- ½¿ x ∩ó½∩ÑΓß∩ «Γα¿µáΓѽ∞¡δ¼ ñ½∩ y0, y1, yn, »α«µÑñπαá πßΓá¡áó½¿-
- óáÑΓ errno ó EDOM, »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ DOMAIN ó stderr ¿
- ó«ºóαáΘáÑΓ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ HUGE.
- Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿º¼Ñ¡Ñ¡¿¿
- »α«µÑñπαδ matherr.
- æ¼.Γá¬ªÑ matherr.
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- double x, y, z;
- .
- .
- .
- y = j0(x);
- z = yn(3,x);
-
-
- BSEARCH
-
- #include <search.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- char *bsearch(key,base,num,width,compare);
- char *key; ¬½ετ »«¿ß¬á
- char *base; π¬áºáΓѽ∞ ¡á »«¿ß¬«óπε íáºπ
- ñá¡¡δσ
- unsigned num,width; τ¿ß½« ¿ αẼÑα φ½Ñ¼Ñ¡Γ«ó
- int (*compare)(); π¬áºáΓѽ∞ ¡á Σπ¡¬µ¿ε ßαáó¡Ñ¡¿∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ bsearch »α«¿ºó«ñ¿Γ ñó«¿τ¡δ⌐ »«¿ß¬ ó «Γß«αΓ¿α«óá¡¡«¼
- ¼áßß¿óÑ ¿º num φ½Ñ¼Ñ¡Γ«ó, αẼÑα ¬áªñ«ú« φ½Ñ¼Ñ¡Γá αáóÑ¡ width
- íá⌐Γ. Base - π¬áºáΓѽ∞ ¡á ¡áτὫ ¼áßß¿óá, key - º¡áτÑ¡¿Ñ ¬½ετá
- »«¿ß¬á.
- Çαúπ¼Ñ¡Γ compare ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á »α«µÑñπαπ, »«ßΓáó-
- ½∩Ѽπε »«½∞º«óáΓѽѼ, ¬«Γ«αá∩ ßαáó¡¿óáÑΓ ñóá φ½Ñ¼Ñ¡Γá ¼áßß¿óá ¿
- ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ, «»αÑñѽ∩εΘÑÑ ¿σ «Γ¡«ΦÑ¡¿Ñ. é ΓÑτÑ¡¿¿ »«¿ß¬á
- Σπ¡¬µ¿∩ bsearch ¼«ªÑΓ óδºδóáΓ∞ »α«µÑñπαπ compare «ñ¿¡ ¿½¿ ¡Ñß-
- ¬«½∞¬« αáº, »ÑαÑñáóá∩ ó ¬áªñ«¼ ó맮óÑ π¬áºáΓѽ¿ ¡á ñóá φ½Ñ¼Ñ¡Γá
- ¼áßß¿óá. Åα«µÑñπαá ñ«½ª¡á ßαáó¡¿óáΓ∞ φ½Ñ¼Ñ¡Γδ, á ºáΓѼ ó«ºóαáΘáΓ∞
- «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐.
-
-
- - 66 -
-
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
- ¼Ñ¡∞ΦÑ 0 element1 ¼Ñ¡∞ΦÑ, τѼ element2
-
- 0 element1 αáóÑ¡ element2
-
- í«½∞ΦÑ 0 element1 í«½∞ΦÑ, τѼ element2
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ bsearch ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á »Ñαó«Ñ óσ«ªñÑ¡¿Ñ
- ¬½ετá key ó ¼áßß¿ó, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ base.
- àß½¿ key ¡Ñ ¡á⌐ñÑ¡, Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ NULL.
- æ¼. Γá¬ªÑ lfind, lsearch, gsort.
-
- Åα¿¼Ñα:
-
- /* öπ¡¬µ¿∩ bsearch »α«¿ºó«ñ¿Γ ñó«¿τ¡δ⌐ »«¿ß¬ ó «Γß«αΓ¿α«-
- óá¡¡«¼ ¼áßß¿óÑ ñ½∩ φ½Ñ¼Ñ¡Γá "key" ¿ ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á
- ßΓαπ¬Γπαπ, ó ¬«Γ«α«⌐ ¡áσ«ñ¿Γß∩ ¬½ετ 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;
-
- {
-
- - 67 -
-
-
- return(strncmp(*arg1, *arg2, strlen(*arg1)));
- }.
-
- CABS
-
- #include <math.h>
-
- double cabs(z);
- struct complex z; ß«ñÑαª¿Γ óÑΘÑßΓóÑ¡¡πε ¿ ¼¡¿¼πε
- τáßΓ¿
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ cabs óδτ¿ß½∩ÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ¬«¼»½Ñ¬ß¡«ú«
- τ¿ß½á. 諼»½Ñ¬ß¡«Ñ τ¿ß½« ñ«½ª¡« íδΓ∞ ßΓαπ¬Γπα«⌐ ß Γ¿»«¼ complex,
- «íΩ∩ó½Ñ¡¡«⌐ ó <math.h>, ß½ÑñπεΘ¿¼ «íαẫ¼:
- struct complex {
- double x,y;
- };
-
- é맮ó cabs φ¬ó¿óá½Ñ¡ΓÑ¡ ß½ÑñπεΘѼπ:
-
- sgrt(z.x*z.x + z.y*z.y)
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ cabs ó«ºóαáΘáÑΓ áíß«½εΓ¡«Ñ º¡áτÑ¡¿Ñ ¬á¬ «»¿ßá¡« óδ-
- ΦÑ. Åα¿ »ÑαÑ»«½¡Ñ¡¿¿ Σπ¡¬µ¿∩ óδºδóáÑΓ »α«µÑñπαπ matherr, ó«ºóαá-
- ΘáÑΓ º¡áτÑ¡¿Ñ HUGE ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE.
- æ¼.Γá¬ªÑ abs, fabs, labs.
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- struct complex value;
- double d;
-
- value.x = 3.0;
- value.y = 4.0;
-
- d = cabs(value);
-
-
- CALLOC
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- char *calloc(n,size);
- unsigned n; ¬«½¿τÑßΓó« φ½Ñ¼Ñ¡Γ«ó
- unsigned size; ñ½¿¡á ¬áªñ«ú« φ½Ñ¼Ñ¡Γá ó íá⌐Γáσ
- Ä»¿ßá¡¿Ñ
-
- öπ¡¬µ¿∩ calloc ºáσóáΓδóáÑΓ »α«ßΓαá¡ßΓó« ñ½∩ σαá¡Ñ¡¿∩ ¼áßß¿-
-
- - 68 -
-
-
- óá ¿º n φ½Ñ¼Ñ¡Γ«ó, ¬áªñδ⌐ ñ½¿¡«⌐ size íá⌐Γ. èáªñδ⌐ φ½Ñ¼Ñ¡Γ ¿¡¿µ¿-
- ὿º¿απÑΓß∩ ó 0.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ calloc ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ char ¡á ºáσóáτÑ¡¡«Ñ
- »α«ßΓαá¡ßΓó«.
- é »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
- αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá. ùΓ«íδ
- »«½πτ¿Γ∞ π¬áºáΓѽ∞ ¡á Γ¿», «Γ½¿τ¡δ⌐ «Γ char, ¿ß»«½∞ºπÑΓß∩ »αÑ«í-
- αẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
- 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ «ßΓὫß∞ ¡Ññ«ßΓáΓ«τ¡« »á-
- ¼∩Γ¿.
- æ¼.Γá¬ªÑ free, haloc, hfree, malloc, realloc.
-
- Åα¿¼Ñα:
-
- #include <malloc.h>
-
- long *lalloc;
- .
- .
- .
- /* ºáσóáΓδóáÑΓ ñ«ßΓáΓ«τ¡«Ñ ¬«½¿τÑßΓó« ¼ÑßΓá ñ½∩ 40 ñ½¿¡¡δσ
- µÑ½δσ ¿ ¿¡¿µ¿á½¿º¿απÑΓ ¿σ ó 0 */
-
- lalloc=(long*)calloc(40, sizeof(long));
-
-
- CEIL
-
- #include <math.h>
-
- double ceil(x);
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ ceil ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ double, »αÑñßΓáó½∩εΘÑÑ ¡á-
- ¿¼Ñ¡∞ΦÑÑ µÑ½«Ñ, ¬«Γ«α«Ñ í«½∞ΦÑ ¿½¿ αáó¡« x.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ ceil ó«ºóαáΘáÑΓ double αѺπ½∞ΓáΓ. 髺óαáΘáѼ«ú«
- º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
-
- æ¼.Γá¬ªÑ floor, fmod.
-
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- double y;
- .
-
- - 69 -
-
-
- .
- .
- y = ceil(1.05); /* y = 2.0 */
- y = ceil(-1.05); /* y = -1.0 */
-
-
- CGETS
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
-
- char *cgets(str);
- char *str; »á¼∩Γ∞ ñ½∩ σαá¡Ñ¡¿∩ ñá¡¡δσ
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ cgets τ¿ΓáÑΓ ßΓ᫬π ß¿¼ó«½«ó »α∩¼« ß ¬«¡ß«½¿ ¿ ºá-
- »«¼¿¡áÑΓ ßΓப㠨 ÑÑ ñ½¿¡π ó ¼ÑßΓ«»«½«ªÑ¡¿¿, π¬áºá¡¡«¼ str. Str
- ñ«½ª¡« íδΓ∞ π¬áºáΓѽѼ ¡á ¼áßß¿ó ß¿¼ó«½«ó. ÅÑαóδ⌐ φ½Ñ¼Ñ¡Γ ¼áßß¿óá
- - str[0] ñ«½ªÑ¡ ß«ñÑαªáΓ∞ ¼á¬ß¿¼á½∞¡πε ñ½¿¡π (ó ß¿¼ó«½áσ) τ¿ΓáÑ-
- ¼«⌐ ßΓ᫬¿. îáßß¿ó ñ«½ªÑ¡ íδΓ∞ ñ«ßΓáΓ«τ¡« í«½∞Φ¿¼, τΓ«íδ ß«ñÑα-
- ªáΓ∞ ßΓ᫬π, ß¿¼ó«½ «¬«¡τá¡¿∩ '\0' ¿ ñóá ñ«»«½¡¿Γѽ∞¡δσ íá⌐Γá.
- öπ¡¬µ¿∩ cgets »α«ñ«½ªáÑΓ ßτ¿ΓδóáΓ∞ ß¿¼ó«½δ, »«¬á ¡Ñ íπñÑΓ »α«τ¿-
- Γá¡á ¬«¼í¿¡áµ¿∩ "éè-Åæ" ¿½¿ «»αÑñѽѡ¡«Ñ ¬«½¿τÑßΓó« ß¿¼ó«½«ó.
- æΓα«¬á ºá»«¼¿¡áÑΓß∩, ¡áτ¿¡á∩ ß str[2]. àß½¿ ¬«¼í¿¡áµ¿∩ "éè-Åæ"
- »α«τ¿Γá¡á, »ÑαÑñ ºá»«¼¿¡á¡¿Ñ¼ «¡á ºá¼Ñ¡∩ÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼
- '\0'.
- öπ¡¬µ¿∩ cgets ó« óΓ«α«¼ φ½Ñ¼Ñ¡ΓÑ ¼áßß¿óá str[1] ºá»«¼¿¡áÑΓ
- ñÑ⌐ßΓó¿Γѽ∞¡πε ñ½¿¡π ßΓ᫬¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ cgets ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¬ ¡áτá½π ßΓ᫬¿, ¬«Γ«αá∩
- ¡áσ«ñ¿Γß∩ ó str[2]. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼.Γá¬ªÑ getch, getche.
-
- Åα¿¼Ñα:
-
- #include <conio.h>
-
- char *result;
- int numread;
- .
- .
- .
- *buffer=80; / *¼á¬ß¿¼á½∞¡«Ñ ¬«½¿τÑßΓó« ß¿¼ó«½«ó */
-
- /* é¡¿¼á¡¿Ñ. *buffer φ¬ó¿óá½Ñ¡Γ¡« *buffer[0] */
-
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óó«ñ∩Γ ßΓ᫬π ß ¬½áó¿áΓπαδ ¿ ¡áσ«ñ∩Γ
- ÑÑ ñ½¿¡π: */
-
- result=cgets(buffer);
- numread=buffer[1];
-
- - 70 -
-
-
-
- /* result π¬áºδóáÑΓ ¡á ßΓ᫬π, numread - ¡á ÑÑ ñ½¿¡π ("éè"
- ¡Ñ ßτ¿ΓáÑΓß∩, Γ.¬. ºá¼Ñ¡∩ÑΓß∩ ¡π½Ñóδ¼ ß¿¼ó«½«¼ */.
-
- CHDIR
-
- #include <direct.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int chdir(pathname);
- char *pathname; path-¿¼∩ ¡«ó«ú« αáí«τÑú« ñ¿αѬ-
- Γ«α¿∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ chdir ¿º¼Ñ¡∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐ ¡á ñ¿αѬ-
- Γ«α¿⌐, «»αÑñѽ∩Ѽδ⌐ »« pathname; pathname ñ«½ªÑ¡ ßßδ½áΓ∞ß∩ ¡á ßπ-
- ΘÑßΓóπεΘ¿⌐ ñ¿αÑ¬Γ«α¿⌐.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ chdir ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ αáí«τ¿⌐ ñ¿αÑ¬Γ«-
- α¿⌐ πß»ÑΦ¡« ¿º¼Ñ¡Ñ¡. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 π¬áºδóáÑΓ ¡á «Φ¿í-
- ¬π; ó φΓ«¼ ß½πτáÑ errno πßΓá¡áó½¿óáÑΓß∩ ó ENOENT, π¬áºδóá∩, τΓ«
- ºáñá¡¡«Ñ path-¿¼∩ ¡Ñ ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡«. ÄΦ¿í¬¿ ¡Ñ 󫺡¿¬áεΓ, Ñß-
- ½¿ pathname «»αÑñѽ∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐ ñ¿αÑ¬Γ«α¿⌐.
- æ¼.Γá¬ªÑ mkdir, rmdir, system.
-
- Åα¿¼Ñα:
-
- #include <direct.h>
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¿º¼Ñ¡∩ÑΓ ΓѬπΘ¿⌐ αáí«τ¿⌐
- ** ñ¿αÑ¬Γ«α¿⌐ ¡á ñ¿αÑ¬Γ«α¿⌐ ¬«α¡∩ */
-
- chdir("/"); /* çá¼Ñτá¡¿Ñ: φ¬ó¿óá½Ñ¡Γ¡« chdir("\\") */
-
-
-
- CHMOD
-
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int chmod(pathname,pmode);
- char *pathname; path-¿¼∩ ßπΘÑßΓóπεΘÑú« Σá⌐½á
- int pmode; αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» ñ½∩ Σá⌐½á
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ chmod ¿º¼Ñ¡∩ÑΓ αáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» ñ½∩ Σá⌐½á, ºáñá¡-
- ¡«ú« path-¿¼Ñ¡Ñ¼. ÉáºαÑΦÑ¡¡δ⌐ ñ«ßΓπ» π»αáó½∩ÑΓ τΓÑ¡¿Ñ¼ ¿ ºá»¿ß∞ε
- Σá⌐½á. è«¡ßΓá¡Γ¡«Ñ óδαáªÑ¡¿Ñ pmode ß«ßΓ«¿Γ ¿º «ñ¡«⌐ ¿½¿ «íÑ¿σ ¼á-
-
- - 71 -
-
-
- ¡¿ΣÑßΓ¡δσ ¬«¡ßΓá¡Γ S_IWRITE ¿ S_IREAD, «»αÑñѽѡ¡δσ ó <sys\stat.h>.
- ïεí«Ñ ñαπú«Ñ º¡áτÑ¡¿Ñ ñ½∩ pmode ¿ú¡«α¿απÑΓß∩. è«úñá ºáñá¡δ «íÑ
- ¬«¡ßΓá¡Γδ, «¡¿ «íΩÑñ¿¡∩εΓß∩ ½«ú¿τÑ߬¿¼ «»ÑαáΓ«α«¼ êïê (:). ç¡áτÑ-
- ¡¿∩ áαúπ¼Ñ¡Γ«ó pmode »αÑñßΓáó½Ñ¡δ ¡¿ªÑ.
-
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
- S_IWRITE αáºαÑΦÑ¡á ºá»¿ß∞
-
- S_IREAD αáºαÑΦÑ¡« τΓÑ¡¿Ñ
-
- S_IREAD : S_IWRITE αáºαÑΦÑ¡δ τΓÑ¡¿Ñ ¿ ºá»¿ß∞
-
- àß½¿ αáºαÑΦÑ¡¿Ñ ¡á ºá»¿ß∞ ¡Ñ ºáñá¡«, Σá⌐½ ñ«ßΓπ»Ñ¡ Γ«½∞¬«
- ñ½∩ τΓÑ¡¿∩. é MS DOS óßÑ Σá⌐½δ ñ«ßΓπ»¡δ ñ½∩ τΓÑ¡¿∩, »«φΓ«¼π ¡Ñ-
- 󫺼«ª¡« ºáñá¡¿Ñ αáºαÑΦÑ¡¿∩ Γ«½∞¬« ¡á ºá»¿ß∞. Å«φΓ«¼π αѪ¿¼δ
- S_IWRITE ¿ S_IREAD : S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ chmod ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ αáºαÑΦÑ¡¡δ⌐ ñ«ß-
- Γπ» πß»ÑΦ¡« ¿º¼Ñ¡Ñ¡. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í
- «Φ¿í¬Ñ; ó φΓ«¼ ß½πτáÑ errno πßΓá¡áó½¿óáÑΓß∩ ó ENOENT, π¬áºδóá∩,
- τΓ« «»αÑñѽѡ¡δ⌐ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ ¡á⌐ñÑ¡.
- æ¼.Γá¬ªÑ access, creat, fstat, open, stat.
-
-
- Åα¿¼Ñα:
-
- #include <sys\types.h>
- #include <sys.stat.h>
- #include <io.h>
- int result;
- .
- .
- .
- result=chmode("data",S_IREAD);
- /* ß«ºñáΓ∞ Σá⌐½ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ */
- if (result==-1)
- perror("can't change file mode");
-
-
-
- CHSIZE
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int chsize(handle,size);
- int handle; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½
- long size; ¡«óá∩ ñ½¿¡á Σá⌐½á ó íá⌐Γáσ
-
- Ä»¿ßá¡¿Ñ.
-
- - 72 -
-
-
-
- öπ¡¬µ¿∩ chsize πóѽ¿τ¿óáÑΓ ¿½¿ π¼Ñ¡∞ΦáÑΓ Σá⌐½, ßó∩ºá¡¡δ⌐ ß
- handle-α«¼, ñ« αẼÑαá, «»αÑñѽ∩Ѽ«ú« áαúπ¼Ñ¡Γ«¼ size. öá⌐½ ñ«½-
- ªÑ¡ íδΓ∞ «Γ¬αδΓ ó αѪ¿¼Ñ, ¬«Γ«αδ⌐ αáºαÑΦáÑΓ ºá»¿ß∞. àß½¿ Σá⌐½
- πóѽ¿τ¿óáÑΓß∩, ¬ ¡Ñ¼π ñ«íáó½∩εΓß∩ ¡π½ÑóδÑ ß¿¼ó«½δ '\0'. àß½¿ Σá⌐½
- π¼Ñ¡∞ΦáÑΓß∩, óßÑ ñá¡¡δÑ «Γ ¬«¡µá π¬«α«τÑ¡¡«ú« Σá⌐½á ñ« »Ñαó«¡á-
- τá½∞¡«⌐ ñ½¿¡δ Σá⌐½á ΓÑα∩εΓß∩.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ chsize ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 0, Ñß½¿ Σá⌐½ πß»ÑΦ¡« ¿º-
- ¼Ñ¡Ñ¡. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ ¿
- errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
- EACCES çáñá¡¡δ⌐ Σá⌐½ «»αÑñѽѡ Γ«½∞¬« ñ½∩
- τΓÑ¡¿∩. ä½∩ óÑαß¿⌐ MS DOS 3.0 ¿ ßΓáαΦ¿σ,
- EACCES ßó¿ñÑΓѽ∞ßΓóπÑΓ « »α¿¡πñ¿Γѽ∞¡«⌐
- í½«¬¿α«ó¬Ñ.(Ä»αÑñѽѡ¡δ⌐ Σá⌐½ ºáí½«¬¿-
- α«óá¡ ñ½∩ ñ«ßΓπ»á)
-
- EBADF ìÑóÑα¡δ⌐ Σá⌐½«óδ⌐ handle
-
- ENOSPC ìá πßΓα«⌐ßΓóÑ ¡Ñ «ßΓὫß∞ ßó«í«ñ¡«ú«
- ¼ÑßΓá
-
- æ¼.Γá¬ªÑ close, creat, open.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <fcntl.h>
- #include <sys\types.h>
- #include <sys\stat.h>
-
- #define MAXSIZE 32768L
-
- int fh, result;
- .
- .
- .
- fh=open("data", O_RDWR|O_CREAT, S_IREAD|S_IWRITE);
-
- .
- .
- .
- /* »ÑαÑñ ºá¬αδΓ¿Ñ¼ Σá⌐½á ¡πª¡« πíÑñ¿Γ∞ß∩, τΓ« «¡
- ** ¡Ñ ñ½¿¡¡ÑÑ 32è
- */
- if (lseek(fh,LO,2)>MAXSIZE)
- result=chsize(fh,MAXSIZE);
-
-
- _CLEAR87
-
- - 73 -
-
-
-
- #include <float.h>
-
- unsigned int _clear87(); »«½πτáÑΓ ¿ «τ¿ΘáÑΓ ß½«ó«
- ßΓáΓπßá »½áóáεΘÑ⌐ Γ«τ¬¿
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _clear87 »«½πτáÑΓ ¿ ßΓ¿αáÑΓ ß½«ó« ßΓáΓπßá »½áóáεΘÑ⌐
- Γ«τ¬¿. 潫ó« ßΓáΓπßá »½áóáεΘÑ⌐ Γ«τ¬¿ ∩ó½∩ÑΓß∩ ¬«¼í¿¡áµ¿Ñ⌐ ß½«óá
- ßΓáΓπßá 8087/80287 ¿ ñαπú¿σ ß«ßΓ«∩¡¿⌐, «í¡áαπª¿óáѼδσ 8087/80287
- handler-«¼, Γᬿσ ¬á¬ »ÑαÑ»«½¡Ñ¡¿Ñ ¿ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿ ßΓÑ¬á »½á-
- óáεΘÑ⌐ Γ«τ¬¿.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ü¿Γδ ó ó«ºóαáΘáѼ«¼ º¡áτÑ¡¿¿ «í«º¡áτáεΓ ßΓáΓπß »½áóáεΘÑ⌐
- Γ«τ¬¿. 漫Γα¿ΓÑ include-Σá⌐½ <float.h> ñ½∩ »«½¡«ú« «»¿ßá¡¿∩ í¿-
- Γ«ó, ó«ºóαáΘáѼδσ Σπ¡¬µ¿Ñ⌐ _clear87.
- çá¼Ñτá¡¿Ñ. ü«½∞Φ¿¡ßΓó« ¿º ¼áΓѼáΓ¿τÑ߬¿σ í¿í½¿«ΓÑτ¡δσ Σπ¡¬-
- µ¿⌐ ¼«ñ¿Σ¿µ¿απÑΓ ß½«ó« ßΓáΓπßá 8087/80287 ß ¡Ñ»αÑñ߬áºπÑ¼δ¼ αÑ-
- ºπ½∞ΓáΓ«¼. 髺óαáΘáѼδÑ º¡áτÑ¡¿∩ Σπ¡¬µ¿⌐ _clear87 ¿ _status87
- ßΓá¡«ó∩Γß∩ í«½ÑÑ ñ«ßΓ«óÑα¡δ¼¿ »«ß½Ñ óδ»«½¡Ñ¡¿∩ ¡Ñ߬«½∞¬¿σ «»Ñαá-
- µ¿⌐ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ß ¿ºóÑßΓ¡δ¼¿ ß«ßΓ«∩¡¿∩¼¿ ß½«óá ßΓáΓπßá
- »½áóáεΘÑ⌐ Γ«τ¬¿.
- æ¼.Γá¬ªÑ _control87, _status87.
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include<float.h>
-
- double a = 1e-40,b;
- float x,y;
-
- main()
- {
- printf("status=%.4x - clear\n",_clear87());
- y = a;
-
- /* ºá»«¼¡Ñ¡¡«Ñ ó y ∩ó½∩ÑΓß∩ ¡ÑΓ«τ¡δ¼ ¿ ß »«ΓÑα∩¡¡«⌐ º¡áτ¿-
- ¼«ßΓ∞ε */
- printf("status=%.4xx - inexact, underflow\n",
- _clear87());
- b = y; /* y ∩ó½∩ÑΓß∩ ¡Ñ»αáó¿½∞¡δ¼ */
- printf("status=%.4x - denormal\n", _clear87());
- }
-
-
- CLEARERR
-
- #include <stdio.h>
- void clearerr(stream);
-
- FILE *stream; π¬áºáΓѽ∞ ¡á ßΓαπ¬Γπαπ FILE
-
- - 74 -
-
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ clearerr »ÑαÑπßΓá¡áó½¿óáÑΓ ñ½∩ »«Γ«¬á stream ¿¡ñ¿-
- ¬áΓ«α «Φ¿í¬¿ ¿ ¿¡ñ¿¬áΓ«α ¬«¡µá Σá⌐½á (EOF) ó 0. ê¡ñ¿¬áΓ«αδ «Φ¿í«¬
- áóΓ«¼áΓ¿τÑ߬¿ ¡Ñ «τ¿ΘáεΓß∩; Ñß½¿ ñ½∩ »«Γ«¬á πßΓá¡«ó½Ñ¡ ¿¡ñ¿¬áΓ«α
- «Φ¿í¬¿, Γ« «»Ñαᵿ¿ ¡áñ »«Γ«¬«¼ íπñπΓ ó«ºóαáΘáΓ∞ º¡áτÑ¡¿∩ «Φ¿í«¬
- ñ« ΓÑσ »«α, »«¬á Σπ¡¬µ¿¿ clearerr ¿½¿ rewind ¡Ñ íπñπΓ óδºóá¡δ.
- æ¼. Γá¬ªÑ Σπ¡¬µ¿¿ eof, feof, ferror, perror.
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include <stdlib.h>
-
- FILE *stream;
- int c;
-
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ τ¿ΓáεΓ ñá¡¡δÑ ¿º »«Γ«¬á ¿ »α«óÑα∩εΓ,
- 󫺡¿¬½á ¿½¿ ¡ÑΓ «Φ¿í¬á »α¿ τΓÑ¡¿¿. ÅÑαÑñ τΓÑ¡¿Ñ¼ »«Γ«¬ ñ«½ªÑ¡
- íδΓ∞ »αÑñóáα¿Γѽ∞¡« «Γ¬αδΓ */.
- if ((c=getc(stream))==EOF)
- { if (ferror(stream))
- { fprintf(stderr, "write error\n");
- clearerr(stream);
- }
- }
-
-
- CLOSE.
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿.
- int close(handle);
- int handle; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½.
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ close ºá¬αδóáÑΓ óßÑ Σá⌐½δ, áßß«µ¿¿α«óá¡¡δÑ ß
- handle.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ 0, Ñß½¿ Σá⌐½ πß»ÑΦ¡« ºá¬αδΓ. 髺óαá-
- ΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ; Σπ¡¬µ¿∩ errno πßΓá-
- ¡áó½¿óáÑΓß∩ ó EBADF, τΓ« ßó¿ñÑΓѽ∞ßΓóπÑΓ « ¡Ñ»αáó¿½∞¡«¼ áαúπ¼Ñ¡ΓÑ
- handle-αá Σá⌐½á.
- æ¼. Γá¬ªÑ chsize, creat, dup, dup2, open, unlink.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <fcntl.h>
-
-
- - 75 -
-
-
- int fh;
-
- fh = open("data", O_RDONLY);
- .
- .
- .
- close(fh);.
-
-
- _CONTROL87
-
- #include <float.h>
-
- unsigned int _control87(new,mask); »«½πτáÑΓ ß½«ó« π»-
- αáó½Ñ¡¿∩ »½áóáεΘÑ⌐
- Γ«τ¬¿
-
- unsigned int new; ¡«óδÑ º¡áτÑ¡¿∩
- í¿Γ«ó ß½«óá
- π»αáó½Ñ¡¿∩
-
- unsigned int mask; πßΓá¡áó½¿óáѼá∩
- ¼á߬á ñ½∩ ¡«óδσ
- í¿Γ«ó ß½«óá π»αáó-
- ½Ñ¡¿∩
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _control87 »«½πτáÑΓ ¿ πßΓá¡áó½¿óáÑΓ ß½«ó« π»αáó½Ñ-
- ¡¿∩ »½áóáεΘÑ⌐ Γ«τ¬¿. 潫ó« π»αáó½Ñ¡¿∩ »½áóáεΘÑ⌐ Γ«τ¬¿ »«ºó«½∩ÑΓ
- ¿º¼Ñ¡∩Γ∞ ó »α«úαá¼¼Ñ αѪ¿¼δ Γ«τ¡«ßΓ¿, «¬απú½Ñ¡¿∩ ¿ íÑ߬«¡Ñτ¡«ßΓ¿
- ñ½∩ ¼áΓѼáΓ¿τÑ߬«ú« »á¬ÑΓá »α«úαá¼¼ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. ê߬½ετ¿-
- Γѽ∞¡δÑ ß«ßΓ«∩¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ Γá¬ªÑ ¼«ª¡« ¼á߬¿α«óáΓ∞ ¿½¿
- αẼá߬¿α«óáΓ∞, ¿ß»«½∞ºπ∩ ñ½∩ φΓ«ú« Σπ¡¬µ¿ε _control87.
- àß½¿ º¡áτÑ¡¿Ñ ñ½∩ mask αáó¡« 0, Γ«úñá _control87 »«½πτáÑΓ
- ß½«ó« π»αáó½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. àß½¿ mask ¡Ñ¡π½Ñóá∩, πßΓá-
- ¡áó½¿óáÑΓß∩ ¡«ó«Ñ º¡áτÑ¡¿Ñ ñ½∩ ß½«óá π»αáó½Ñ¡¿∩ ß½ÑñπεΘ¿¼ «íαá-
- º«¼: ñ½∩ ½εí«ú« í¿Γá αáó¡«ú« 1 ó mask ß««ΓóÑΓßΓóπεΘ¿⌐ í¿Γ ó new
- ¿ß»«½∞ºπÑΓß∩ ñ½∩ «í¡«ó½Ñ¡¿∩ ß½«óá π»αáó½Ñ¡¿∩ ß½«óἿ. ¥Γ« ºá»¿ßδ-
- óáÑΓß∩ Γá¬:
-
- fpcntrl=((fpcntrl & ~mask) : (new & mask)),
-
- úñÑ fpcntrl ∩ó½∩ÑΓß∩ ß½«ó«¼ π»αáó½Ñ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ü¿Γδ ó ó«ºóαáΘáѼ«¼ º¡áτÑ¡¿¿ «í«º¡áτáεΓ ß«ßΓ«∩¡¿Ñ π»αáó½Ñ-
- ¡¿∩ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐. æ¼. include-Σá⌐½ <float.h> ñ½∩ »«½¡«ú«
- «»¿ßá¡¿∩ í¿Γ«ó, ó«ºóαáΘáѼδσ _control87.
- æ¼.Γá¬ªÑ _clear87, _status87.
-
-
-
-
- - 76 -
-
- Åα¿¼Ñα:
-
- #include <stdio.h>
- #include<float.h>
-
- double a = .1;
-
- main()
- {
- /* »«½πτáÑΓ ß½«ó« π»αáó½Ñ¡¿∩ */
- printf("control=%.4x\n", _control87(0,0));
- printf("a*a=.01=%.15e\n",a*a);
-
- /* πßΓá¡áó½¿óáÑΓ Γ«τ¡«ßΓ∞ ó 24 í¿Γá */
- _control87(PC_24, MCW_PC);
- printf("a*a=.01(rounded to 24 bits)=%.15e\n",a*a);
-
- /* ó«ßßΓá¡áó½¿óáÑΓ ¬ »Ñαó«¡áτá½∞¡«¼π π¼«½τá¡¿ε */
- _control87(CW_DEFAULT, 0xffff);
- printf("a*a=.01=%.15e\n",a*a);
- }
-
-
- COS-COSH
-
- #include <math.h>
-
- double cos(x); óδτ¿ß½∩ÑΓ ¬«ß¿¡πß x
- double cosh(x); óδτ¿ß½∩ÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß
- x
- double x; αáñ¿á¡
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ cos ¿ cosh ó«ºóαáΘáεΓ ß««ΓóÑΓßΓóÑ¡¡« ¬«ß¿¡πß ¿ ú¿-
- »Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß x.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ cos ó«ºóαáΘáÑΓ ¬«ß¿¡πß x. àß½¿ x í«½∞Φ«⌐, ó αѺπ½∞-
- ΓáΓÑ ¼«ªÑΓ ó«º¡¿¬¡πΓ∞ τáßΓ¿τ¡á∩ »«ΓÑα∩ º¡áτ¿¼«ßΓ¿. é φΓ«¼ ß½πτáÑ
- cos óδαáíáΓδóáÑΓ «Φ¿í¬π PLOSS, ¡« ß««íΘÑ¡¿∩ ¡Ñ »ÑτáΓáÑΓ. àß½¿ x
- ¡áßΓ«½∞¬« í«½∞Φ«⌐, τΓ« ΓÑα∩ÑΓß∩ «íΘá∩ º¡áτ¿¼«ßΓ∞ αѺπ½∞ΓáΓá, Γ«
- cos »ÑτáΓáÑΓ ß««íΘÑ¡¿Ñ «í «Φ¿í¬Ñ TLOSS ó stderr ¿ ó«ºóαáΘáÑΓ 0. é
- «í«¿σ ß½πτá∩σ errno πßΓá¡áó½¿óáÑΓß∩ ó ERANGE.
- öπ¡¬µ¿∩ cosh ó«ºóαáΘáÑΓ ú¿»Ñαí«½¿τÑ߬¿⌐ ¬«ß¿¡πß x. àß½¿ αÑ-
- ºπ½∞ΓáΓ í«½∞Φ«⌐, cosh ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ HUGE ¿ πßΓá¡áó½¿óáÑΓ
- errno ó ERANGE.
- Äíαaí«Γ¬a «Φ¿í«¬ ¼«ªÑΓ íδΓ∞ ¼«ñ¿Σ¿µ¿α«óa¡a »α¿ ¿ß»«½∞-
- º«óa¡¿¿ »α«µÑñπαδ matherr.
- æ¼.Γá¬ªÑ acos, asin, atan, atan2, matherr, sin, sinh, tan,
- tanh.
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
-
- - 77 -
-
-
- double x,y;
- .
- .
- .
-
- y = cos(x);
- y = cosh(x);
-
-
- CPRINTF
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- int cprintf(format-string[,argument...]);
- char *format-string; ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ cprints Σ«α¼áΓ¿απÑΓ ¿ »ÑτáΓáÑΓ αẽ¿τ¡δÑ ß¿¼ó«½δ ¿
- º¡áτÑ¡¿∩ »α∩¼« ¡á ¬«¡ß«½∞, ¿ß»«½∞ºπ∩ ñ½∩ óδó«ñ¿¼δσ ß¿¼ó«½«ó Σπ¡¬-
- µ¿ε putch. èáªñδ⌐ arguments (Ñß½¿ «¡ ÑßΓ∞) »αÑ«íαẫóδóáÑΓß∩ ¿
- óδó«ñ¿Γß∩ ß«ú½áß¡« ß««ΓóÑΓßΓóπεΘÑ⌐ ߻ѵ¿Σ¿¬áµ¿¿ Σ«α¼áΓá ó
- format-string. Format-string ¿¼ÑÑΓ Γπ ªÑ ßá¼πε Σ«α¼π ¿ Σπ¡¬µ¿ε,
- τΓ« ¿ áαúπ¼Ñ¡Γ format-string ñ½∩ Σπ¡¬µ¿¿ printf (æ¼.«»¿ßá¡¿Ñ Σπ¡-
- ¬µ¿¿ printf ñ½∩ »«½πτÑ¡¿∩ »«ñα«í¡«⌐ ¿¡Σ«α¼áµ¿¿ « format-string ¿
- áαúπ¼Ñ¡Γáσ).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ cprintf ó«ºóαáΘáÑΓ τ¿ß½« ¡á»ÑτáΓá¡¡δσ ß¿¼ó«½«ó.
- æ¼.Γá¬ªÑ fprintf, printf, sprintf, vprintf.
- çá¼Ñτá¡¿Ñ! é «Γ½¿τ¿¿ «Γ Σπ¡¬µ¿⌐ sprintf, printf ¿ sprintf,
- Σπ¡¬µ¿∩ cprintf ¡á óδσ«ñÑ ¡Ñ Γαá¡ß½¿απÑΓ ß¿¼ó«½δ Åæ ó ¬«¼í¿¡áµ¿ε
- "éè-Åæ".
-
- Åα¿¼Ñα:
-
- #include <conio.h>
-
- int i=-16, j=29;
- unsigned int k=511;
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ¡á»ÑτáΓáÑΓ i = -16, j = 0x1d, k = 511 */
- cprintf("i=%d, j=%#x, k=%u\n", i,j,k);
-
-
- CPUTS
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- void cputs(str);
- char *str; π¬áºáΓѽ∞ ¡á óδó«ñ¿¼πε ßΓ᫬π
-
-
- - 78 -
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ cputs ºá»¿ßδóáÑΓ ßΓ᫬π, «¬á¡τ¿óáεΘπεß∩ ¡π½Ñóδ¼
- ß¿¼ó«½«¼ ¿ ¡á ¬«Γ«απε π¬áºδóáÑΓ str, »α∩¼« ¡á ¬«¡ß«½∞.
- çá¼Ñτá¡¿Ñ. é ßΓα«¬Ñ ¬«¼í¿¡áµ¿∩ "髺óαáΓ ¬áαÑΓ¬¿ - ÅÑαÑó«ñ
- ßΓ᫬¿" »«ß½Ñ ºá»¿ß¿ áóΓ«¼áΓ¿τÑ߬¿ ¡Ñ »«∩ó½∩ÑΓß∩.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
-
- æ¼.Γá¬ªÑ putch.
-
- Åα¿¼Ñα:
-
- #include <conio.h>
-
- char *buffer = "Insert data disk in drive a: \r\n";
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α óδó«ñ¿Γ »«ñ߬Ậπ ¡á ¬«¡ß«½∞ */.
-
- cputs(buffer);.
-
- CREAT
-
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿⌐.
-
- int creat(pathname, pmode);
- char *pathname; path-¿¼∩ ¡«ó«ú« Σá⌐½á
- int pmode; αáºαÑΦÑ¡¡δ⌐ αѪ¿¼ ñ«ßΓπ»á
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ creat ½¿í« ß«ºñáÑΓ ¡«óδ⌐ Σá⌐½, ½¿í« «Γ¬αδóáÑΓ ¿ «í-
- ¡«ó½∩ÑΓ (πßѬáÑΓ ñ« ñ½¿¡δ 0) ßπΘÑßΓóπεΘ¿⌐ Σá⌐½. àß½¿ ßπΘÑßΓóπÑΓ
- Σá⌐½, «»αÑñѽ∩Ѽδ⌐ path-¿¼Ñ¡Ñ¼, Γ« ß«ºñáÑΓß∩ ¡«óδ⌐ Σá⌐½ ß ºáñá¡-
- ¡δ¼ αѪ¿¼«¼ ñ«ßΓπ»á ¿ ∩ó½∩εΘ¿⌐ß∩ «Γ¬αδΓδ¼ ñ½∩ ºá»¿ß¿. àß½¿ Σá⌐½
- ßπΘÑßΓóπÑΓ ¿ Ñú« αѪ¿¼ ñ«ßΓπ»á »«ºó«½∩ÑΓ ºá»¿ß∞, Γ«úñá Σπ¡¬µ¿∩
- creat πßѬáÑΓ Σá⌐½ ¬ ñ½¿¡Ñ 0, π¡¿τΓ«ªá∩ óßÑ ß«ñÑন¼«Ñ, ¿ «ñ¡«ó-
- αѼѡ¡« «Γ¬αδóáÑΓ Σá⌐½.
- ÉáºαÑΦÑ¡¡δ⌐ αѪ¿¼ ñ«ßΓπ»á - pmode - »α¿¼Ñ¡∩ÑΓß∩ Γ«½∞¬« ñ½∩
- ó¡«ó∞ ß«ºñá¡¡δσ Σá⌐½«ó. ì«óδ⌐ Σá⌐½ »«½πτáÑΓ πßΓá¡«ó½Ñ¡¡δ⌐ αѪ¿¼
- ñ«ßΓπ»á »«ß½Ñ »Ñαó«ú« Ñú« ºá¬αδΓ¿∩. ûѽ«Ñ óδαáªÑ¡¿Ñ pmode ß«ßΓ«¿Γ
- ¿º «ñ¡«⌐ ¿½¿ ¡Ñ߬«½∞¬¿σ ¼á¡¿ΣÑßΓ¡δσ ¬«¡ßΓá¡Γ - S_IWRITE ¿
- S_IREAD, «íΩ∩ó½Ñ¡¡δσ ó <sys\stat.h>. àß½¿ ºáñáεΓß∩ «íÑ ¬«¡ßΓá¡Γδ,
- «¡¿ «íΩÑñ¿¡∩εΓß∩ »α¿ »«¼«Θ¿ ½«ú¿τÑ߬«ú« OR (:). ç¡áτÑ¡¿Ñ áαúπ¼Ñ¡-
- Γá pmode »α¿ó«ñ¿Γß∩ ¡¿ªÑ.
-
- èÄìæÆÇìÆÇ æî¢æïÄéÄà çìÇùàìêà
-
- S_IWRITE αáºαÑΦáÑΓ ºá»¿ß∞
-
- S_IREAD αáºαÑΦáÑΓ τΓÑ¡¿Ñ
-
- - 79 -
-
-
-
- S_IREAD:S_IWRITE αáºαÑΦáεΓ τΓÑ¡¿Ñ ¿ ºá»¿ß∞
-
- àß½¿ ºá»¿ß∞ ¡Ñ αáºαÑΦÑ¡á, Σá⌐½ »αÑñ¡áº¡áτÑ¡ Γ«½∞¬« ñ½∩ τΓÑ-
- ¡¿∩. é MS DOS ¡Ñ½∞º∩ αáºαÑΦ¿Γ∞ Γ«½∞¬« ºá»¿ß∞. Å«φΓ«¼π αѪ¿¼δ
- S_IWRITE ¿ S_IREAD: S_IWRITE ∩ó½∩εΓß∩ φ¬ó¿óá½Ñ¡Γ¡δ¼¿.
- é óÑαß¿∩σ MS DOS 3.0 ¿ ßΓáαΦ¿σ Σá⌐½δ, «Γ¬αδóáѼδÑ »α¿ »«¼«-
- Θ¿ creat, óßÑúñá «Γ¬αδóáεΓß∩ ó ß«ó¼ÑΘÑ¡¡«¼ αѪ¿¼Ñ (compatibility
- mode).
- öπ¡¬µ¿∩ creat »ÑαÑñ πßΓá¡«ó¬«⌐ Σ½áúá ñ«ßΓπ»á »α¿ßóá¿óáÑΓ
- pmode ¼á᪥ ñ«ßΓπ»á (»«ñα«í¡« «í φΓ«¼ ß¼«Γα¿ΓÑ umask).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- é ß½πτáÑ πß»ÑΦ¡«ú« ó맮óá φΓá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ handle ¡á
- ß«ºñá¡¡δ⌐ Σá⌐½. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í-
- ¬Ñ; errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
-
- éÄçéÉÇÖÇàîǃ æî¢æïÄéÄà çìÇùàìêà
- éàïêùêìÇ
-
- EACCES Path-¿¼∩ «»αÑñѽ∩ÑΓ ßπΘÑßΓóπεΘ¿⌐
- Σá⌐½ Γ«½∞¬« ñ½∩ τΓÑ¡¿∩ ¿½¿
- «»αÑñѽ∩ÑΓ ñ¿αÑ¬Γ«α¿⌐ ó¼ÑßΓ« Σá⌐½á
-
- EMFILE ñαπú¿Ñ handle-αδ Σá⌐½á ¡Ñ »α¿ú«ñ¡δ,
- Γ.¬. ¼¡«ú« «Γ¬αδΓδσ Σá⌐½«ó
-
- ENOENT path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«.
-
- æ¼. Γá¬ªÑ chmod, chsize, close, dup, dup2, open, sopen,
- umask.
- çá¼Ñτá¡¿Ñ. Åα«µÑñπαá create «íÑß»Ñτ¿óáÑΓ »Ñαó«¡áτá½∞¡πε
- ß«ó¼ÑßΓ¿¼«ßΓ∞ ß »αÑñδñπΘ¿¼¿ í¿í½¿«ΓѬἿ. é맮ó open »α¿ »«¼«Θ¿
- º¡áτÑ¡¿⌐ O_CREAT ¿ O_TRUNC, «»αÑñѽѡ¡δσ ó áαúπ¼Ñ¡ΓÑ oflag, ∩ó½∩-
- ÑΓß∩ º¬ó¿óá½Ñ¡Γ¡δ¼ ¿ »αÑñ»«τΓ¿Γѽ∞¡δ¼ ñ½∩ ¡«ó«ú« ¬«ñá.
-
- Åα¿¼Ñα:
-
- #include <sys\types.h>
- #include <sys\stat.h>
- #include <io.h>
- #include <stdlib.h>
-
- int fh;
-
- fh = creat("data", S_IREAD|S_IWRITE);
-
- if (fh == -1)
- perror("Couldn't create data file");.
-
-
-
-
- - 80 -
-
- CSCANF
-
- #include <conio.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int cscanf(format-string[,argument...]);
- char *format-string; ßΓ᫬á π»αáó½Ñ¡¿∩ Σ«α¼áΓ«¼
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ cscanf τ¿ΓáÑΓ ñá¡¡δÑ »α∩¼« ß ¬«¡ß«½¿ ó ¼ÑßΓ«, ºáñá-
- óáѼ«Ñ arguments (Ñß½¿ «¡¿ ÑßΓ∞), ¿ß»«½∞ºπ∩ ñ½∩ τΓÑ¡¿∩ ß¿¼ó«½«ó
- Σπ¡¬µ¿ε getch. èáªñδ⌐ áαúπ¼Ñ¡Γ argument ñ«½ªÑ¡ íδΓ∞ π¬áºáΓѽѼ ¡á
- »ÑαѼѡ¡πε ß Γ¿»«¼, ¬«Γ«αδ⌐ ß««ΓóÑΓßΓóπÑΓ «»αÑñѽѡ¡«¼π Γ¿»π ó
- format-string. Format-string π»αáó½∩ÑΓ ¿¡ΓÑα»αÑΓᵿÑ⌐ »«½Ñ⌐ óó«ñá
- ¿ ¿¼ÑÑΓ Γπ ªÑ ßá¼πε Σ«α¼π ¿ Σπ¡¬µ¿ε, τΓ« áαúπ¼Ñ¡Γ format-string
- ñ½∩ Σπ¡¬µ¿¿ scanf (ß¼. «»¿ßá¡¿Ñ Σπ¡¬µ¿¿ scanf ñ½∩ »«½πτÑ¡¿∩ »«ñ-
- α«í¡«⌐ ¿¡Σ«α¼áµ¿¿ « format-string).
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ scanf ó«ºóαáΘáÑΓ τ¿ß½« πß»ÑΦ¡« »αÑ«íαẫóá¡¡δσ ¿
- ¡áº¡áτÑ¡¡δσ »«½Ñ⌐. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ ¡Ñ ß«ñÑαª¿Γ »α«τ¿Γá¡¡δσ,
- ¡« ¡Ñ ¡áº¡áτÑ¡¡δσ »«½Ñ⌐. Åα¿ »«»δ⪥ τΓÑ¡¿∩ ¬«¡µá Σá⌐½á ó«ºóαáΘá-
- ÑΓß∩ º¡áτÑ¡¿Ñ EOF. 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ 0 «º¡áτáÑΓ, τΓ« ¡áº¡á-
- τÑ¡¡δσ »«½Ñ⌐ ¡ÑΓ.
- æ¼.Γá¬ªÑ fscanf, scanf, sscanf.
-
- Åα¿¼Ñα:
-
- #include <conio.h>
-
- int result;
- char buffer [20];
- .
- .
- .
- cprintf("Please enter file name: ");
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α ºá»«¼¿¡áÑΓ óóÑñÑ¡¡πε ß ¬½áó¿áΓπαδ
- ßΓ᫬π */
-
- result = csanf("%19s", buffer);
-
- /* result - τ¿ß½« óÑα¡« óóÑñÑ¡¡δσ »«½Ñ⌐. Ä¡ αáóÑ¡ 0, Ñß½¿
- ¡ÑΓ ß««ΓóÑΓßΓó¿∩ */
-
-
- CTIME
-
- #include <time.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- char *ctime(time);
- long *time; π¬áºáΓѽ∞ ¡á σαá¡¿¼«Ñ óαѼ∩
-
-
-
- - 81 -
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ ctime »αÑ«íαáºπÑΓ óαѼ∩, σαá¡¿¼«Ñ ¬á¬ long- º¡áτÑ-
- ¡¿Ñ, ó ß¿¼ó«½∞¡πε ßΓ᫬π. ç¡áτÑ¡¿Ñ time «íδτ¡« »«½πτáÑΓß∩ ¿º óδ-
- º«óá Σπ¡¬µ¿¿ time, ¬«Γ«αá∩ ó«ºóαáΘáÑΓ ¬«½¿τÑßΓó« ßѬπ¡ñ, »α«⌐ñÑ¡-
- ¡δσ «Γ º¡áτÑ¡¿∩ óαѼѡ¿ »« âα¿¡ó¿τπ, Γ.Ñ. ß 1 ∩¡óáα∩ 1980 ú«ñá.
- æΓ᫬á αѺπ½∞ΓáΓá, óδαáí«Γá¡¡á∩ »« ctime, ß«ñÑαª¿Γ 26 ß¿¼-
- ó«½«ó ¿ ¿¼ÑÑΓ Σ«α¼π, »α¿óÑñÑ¡¡πε ¡¿ªÑ ó »α¿¼ÑαÑ:
-
- Mon Jan 02 02:03:55 1980\n\0
-
- êß»«½∞ºπÑΓß∩ 24 τáßá. éßÑ »«½∩ ¿¼ÑεΓ »«ßΓ«∩¡¡πε Φ¿α¿¡π.
- æ¿¼ó«½ ¡«ó«⌐ ßΓ᫬¿ ('\n') ¿ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0') ºá¡¿¼áεΓ ñóÑ
- »«ß½Ññ¡¿Ñ »«º¿µ¿¿ ó ßΓ᫬Ñ.
- é MS DOS ñáΓδ αá¡∞ΦÑ 1980 ú«ñá ¡Ñ »«¡¿¼áεΓß∩. àß½¿ time
- »αÑñßΓáó½∩ÑΓ ñáΓπ »ÑαÑñ 1 ∩¡óáα∩ 1980 ú«ñá, ctime ó«ºóαáΘáÑΓ ß¿¼-
- ó«½∞¡πε ßΓ᫬π, »αÑñßΓáó½Ñ¡¡πε 00:00:00 January 1,1980.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ ctime ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ß¿¼ó«½∞¡πε ßΓ᫬π αÑ-
- ºπ½∞ΓáΓá. 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ó ß½πτáÑ «Φ¿í¬¿ ¡ÑΓ.
- æ¼.Γá¬ªÑ asctime, ftime, gmtime, localtime, time.
-
- çá¼Ñτá¡¿Ñ. öπ¡¬µ¿¿ asctime ¿ ctime ¿ß»«½∞ºπεΓ «ñ¿¡ ¿ ëà ªÑ
- ßΓáΓ¿ßΓ¿τÑ߬¿ ºáσóáτÑ¡¡δ⌐ íπΣÑα ñ½∩ σαá¡Ñ¡¿∩ ó ¡Ñ¼ ßΓ᫬¿ αѺπ½∞-
- ΓáΓá. èáªñδ⌐ ó맮ó «ñ¡«⌐ ¿º φΓ¿σ »α«µÑñπα π¡¿τΓ«ªáÑΓ αѺπ½∞ΓáΓ
- »αÑñδñπΘÑú« ó맮óá.
-
- Åα¿¼Ñα:
-
- #include <time.h>
- #include <stdio.h>
-
- long time;
-
- time(<ime);
- printf("the time is %s\n",ctime(<ime));
-
-
- DIIEEETOMSBIN-DMSBINTOIEEE
-
-
- #include <math.h>
-
- int dieeetomsbin(src8,dst8); »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐
- Γ«τ¡«ßΓ¿ Σ«α¼áΓá IEEE ¬
- ñó«¿τ¡«¼π ñó«⌐¡«¼π Σ«α¼á-
- Γπ MS
-
- int dmsbintoieee(src8,dst8); »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐
- Γ«τ¡«ßΓ¿ ó Σ«α¼áΓÑ MS ¬
- τ¿ß½π ó Σ«α¼áΓÑ IEEE
-
- Ä»¿ßá¡¿Ñ.
-
- Åα«µÑñπαá dieeetomsbin »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿ ó
-
- - 82 -
-
-
- Σ«α¼áΓÑ IEEE ¬ ñó«¿τ¡«¼π Σ«α¼áΓπ Microsoft.
- Åα«µÑñπαá dmsbintoieee »αÑ«íαáºπÑΓ τ¿ß½« ñó«⌐¡«⌐ Γ«τ¡«ßΓ¿ ó
- ñó«¿τ¡«¼ Σ«α¼áΓÑ Microsoft ¬ IEEE Σ«α¼áΓπ.
- ¥Γ¿ »α«µÑñπαδ »«ºó«½∩εΓ »α«úαἼἠæ¿, ¬«Γ«αδÑ ºá»¿ßδóáεΓ
- τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó Σ«α¼áΓÑ IEEE, ¿ß»«½∞º«óáΓ∞ τ¿ß½Ñ¡¡δÑ
- ñá¡¡δÑ ó »«½∩σ ñá¡¡δσ ß½πτá⌐¡«ú« ñ«ßΓπ»á, ß«ºñá¡¡δÑ »α¿ »«¼«Θ¿
- Microsoft BASIC, ¬«Γ«αδ⌐ ºá»¿ßδóáÑΓ τ¿ß½á ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó
- ñó«¿τ¡δ⌐ Σ«α¼áΓ Microsoft ¿ ¡á«í«α«Γ.
- Çαúπ¼Ñ¡Γ src8 ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á »αÑ«íαáºπѼ«Ñ
- double-º¡áτÑ¡¿Ñ. ÉѺπ½∞ΓáΓ ºá»¿ßδóáÑΓß∩ ó αáß»«½«ªÑ¡¿Ñ, ºáñá¡¡«Ñ
- áαúπ¼Ñ¡Γ«¼ dst8.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ¥Γ¿ Σπ¡¬µ¿¿ ó«ºóαáΘáεΓ 0, Ñß½¿ »αÑ«íαẫóá¡¿Ñ í佫 πß»ÑΦ-
- ¡δ¼, ¿ 1 - Ñß½¿ »αÑ«íαẫóá¡¿Ñ »«ó½Ñ¬½« »ÑαÑ»«½¡Ñ¡¿Ñ.
- æ¼.Γá¬ªÑ fieeetomsbin, fmsbintoieee.
-
- çá¼Ñτá¡¿Ñ. ¥Γ¿ »α«µÑñπαδ ¡Ñ «íαáíáΓδóáεΓ IEEE NAN ¿ íÑ߬«-
- ¡Ñτ¡«ßΓ∞. ìÑ«íδτ¡δÑ IEEE Γαá¬ΓπεΓß∩ ó »αÑ«íαẫóá¡¿∩σ ¬á¬ 0.
-
-
- DIFFTIME
-
-
- #include <time.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- double difftime(time2,time1);
- time_t time2; Γ¿» time_t, «íΩ∩ó½Ñ¡¡δ⌐ ó <time.h>
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ difftime óδτ¿ß½∩ÑΓ αạ«ßΓ∞ ¼Ñªñπ time2 ¿ time1.
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ difftime ó«ºóαáΘáÑΓ »α«⌐ñÑ¡¡«Ñ óαѼ∩ ó ßѬπ¡ñáσ «Γ
- time1 ñ« time2 ¬á¬ τ¿ß½« ß ñó«⌐¡«⌐ Γ«τ¡«ßΓ∞ε.
- æ¼.Γá¬ªÑ time.
-
-
- Åα¿¼Ñα:
-
- #include <time.h>
-
- int mark[10000];
-
- main()
- {
- /* φΓ« - »α¿¼Ñα π»«ΓαÑí½Ñ¡¿∩ óαѼѡ¿ »«ßαÑñßΓó«¼ ¿ß»«½∞º«-
- óá¡¿∩ difftime. Ä¡á óδτ¿ß½∩ÑΓ, ߬«½∞¬« óαѼѡ¿ Ñ⌐ »«ΓαÑí«óὫß∞,
- τΓ«íδ ¡á⌐Γ¿ »α«ßΓδÑ τ¿ß½á «Γ 3 ñ« 10000. ä½∩ óδó«ñá »α«ßΓ«ú« τ¿ß-
-
- - 83 -
-
-
- ½á π¡¿τΓ«ªáÑΓß∩ ßá¼δ⌐ ó¡ÑΦ¡¿⌐ µ¿¬½ ¿ ¬«¼¼Ñ¡Γáα¿¿ «úαá¡¿τ¿ΓѽÑ⌐
- ó«¬απú "printf("%d\t",n);"*/
-
- time_t start, finish;
- register int i, loop, n, num, step;
-
- time(&start);
- for(loop=0; loop<1000; ++loop)
- for(num=0,n=3;n<10000;n+=2)
- if(!mark[n]) {
- /* printf("%d\t",n); */
- step=2*n;
- for(i=3*n;i<10000;i+=step)
- mark[i]=-1;
- ++num;
- }
- time(&finish);
-
- /* ó "sieve" »ÑτáÑΓß∩ ó ßαÑñ¡Ñ¼ 1000 µ¿¬½«ó */
-
-
- printf("\nProgram takes %f seconds to find %d
- primes.\n",
- difftime(finish,start)/1000,num);
- }
-
- ìá óδσ«ñÑ:
-
- Program takes 0.482000 seconds to find 1228 primes.
-
-
- DOSEXTERR
-
-
- #include <dos.h>
-
- int dosexterr(buffer);
- struct DOSERROR *buffer;
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ dosexterr »«½πτáÑΓ º¡áτÑ¡¿Ñ αÑú¿ßΓαá, ó«ºóαáΘáѼ«ú«
- ß¿ßΓѼ¡δ¼ óδº«ó«¼ MS DOS 59H, ¿ ºá»¿ßδóáÑΓ φΓ« º¡áτÑ¡¿Ñ ó ßΓαπ¬-
- Γπαπ, ¡á ¬«Γ«απε π¬áºδóáÑΓ buffer. ¥Γá Σπ¡¬µ¿∩ »«½Ñº¡á, ¬«úñá
- ß¿ßΓѼ¡δÑ ó맮óδ óδαáíáΓδóáεΓß∩ ó óÑαß¿∩σ MS DOS 3.0 ¿ ßΓáαΦ¿σ ¿
- ¬«Γ«αδÑ »αÑñ½áúáεΓ αáßΦ¿αÑ¡¡πε «íαáí«Γ¬π «Φ¿í«¬. ü«½ÑÑ »«ñα«í¡«
- ß¿ßΓѼ¡δÑ ó맮óδ MS DOS «»¿ßá¡δ ó απ¬«ó«ñßΓóÑ "Microsoft MS DOS
- Programmer's Reference Manual".
- Æ¿» ßΓαπ¬Γπαδ DOSERROR «íΩ∩ó½Ñ¡ ó <dos.h> ¿ »αÑñßΓáó½∩ÑΓ
- ß½ÑñπεΘÑÑ:
-
- struct DOSERROR {
- int exterror;
- char class;
- char action;
-
- - 84 -
-
-
- char locus;
- };
-
- Çαúπ¼Ñ¡Γ NULL-π¬áºáΓѽ∩ »«ßαÑñßΓó«¼ dosexterr «»αÑñѽ∩ÑΓ ó
- AX ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ dosexterr ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ ó αÑú¿ßΓα AX (¿ñÑ¡-
- Γ¿τ¡« º¡áτÑ¡¿ε ó »«½Ñ ßΓαπ¬Γπαδ exterror).
- æ¼.Γá¬ªÑ perror.
-
- Åα¿¼Ñα:
-
- #include <dos.h>
- #include <fcntl.h>
- #include <stdio.h>
-
- struct DOSERROR doserror;
- int fd;
-
- if ((fd=open("test.dat",O_RDONLY))==-1 {
- dosexterr(&doserror);
- printf("error=%d,class=%d,action=%d,locus=%d\n",
- doserror.exterror, doserror.class,
- doserror.action, doserror.locus);
- }
-
-
- DUP - DUP2
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿⌐
-
- int dup(handle); ß«ºñáÑΓ óΓ«α«⌐ handle-α ñ½∩
- «Γ¬αδΓ«ú« Σá⌐½á
- int handle; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½
-
- int dup2(handle1, handle2);
- Σ«αß¿απÑΓ handle1 ñ½∩ ßß佬¿ ¡á
- handle2 Σá⌐½á
-
- int handle1; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½
- int handle2; ½εí«Ñ º¡áτÑ¡¿Ñ handle
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ dup ¿ dup2 óδºδóáεΓ óΓ«α«⌐ handle-α Σá⌐½á, ßó∩ºá¡-
- ¡δ⌐ ß «Γ¬αδΓδ¼ Σá⌐½«¼. Ä»Ñαᵿ¿ ó Σá⌐½Ñ ¼«úπΓ »ÑαÑßδ½áΓ∞ß∩
- handle-α«¼, Γ«úñá ¬á¬ óßÑ handle-αδ, ßó∩ºá¡¡δÑ ß ºáñá¡¡δ¼ Σá⌐½«¼,
- ¿ß»«½∞ºπεà ëà ªÑ ßá¼δ⌐ π¬áºáΓѽ∞ ¡á Σá⌐½. 櫺ñá¡¿Ñ ¡«ó«ú« handle
- ¡Ñ ó½¿∩ÑΓ ¡á Γ¿» ñ«ßΓπ»á Σá⌐½á.
- öπ¡¬µ¿∩ dup ó«ºóαáΘáÑΓ ß½ÑñπεΘ¿⌐ ñ«ßΓπ»¡δ⌐ handle-α ñ½∩ ºá-
-
- - 85 -
-
-
- ñá¡¡«ú« Σá⌐½á. öπ¡¬µ¿∩ dup2 Σ«αß¿απÑΓ (force) ºáñá¡¡δ⌐ handle,
- Γ.Ñ. handle2, τΓ«íδ ߽߫áΓ∞ß∩ ¡á ëà ªÑ ßá¼δ⌐ Σá⌐½, ¡á ¬«Γ«αδ⌐
- ßßδ½áÑΓß∩ handle1. àß½¿ ó« óαѼ∩ ó맮óá handle2 ßó∩ºá¡ ß «Γ¬αδΓδ¼
- Σá⌐½«¼, Γ« φëà Σá⌐½ ºá¬αδóáÑΓß∩.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ dup ó«ºóαáΘáÑΓ ¡«óδ⌐ handle-α Σá⌐½á. öπ¡¬µ¿∩ dup2
- ó«ºóαáΘáÑΓ 0 ó ß½πτáÑ πß»Ñσá. àß½¿ 󫺡¿¬áÑΓ «Φ¿í¬á, «íÑ Σπ¡¬µ¿¿
- ó«ºóαáΘáεΓ -1 ¿ errno πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ-
- ¡¿⌐.
-
- éàïêùêìÇ æî¢æïÄéÄà çìÇùàìêà
-
- EBADF ìÑóÑα¡δ⌐ handle-α Σá⌐½á
-
- EMFILE äαπú¿Ñ handle-αδ Σá⌐½á ñ½∩ ¡Ñú«
- ¡Ñ ñ«ßΓπ»¡δ, Γ.¬. ¼¡«ú« «Γ¬αδΓδσ
- Σá⌐½«ó
-
- æ¼. Γá¬ªÑ close, creat, open.
-
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <stdlib.h>
-
- int fh;
- .
- .
- .
- /* óδí¿αáÑΓ ñαπú«⌐ handle-α Σá⌐½á, τΓ«íδ ߽߫áΓ∞ß∩ ¡á Γ«Γ
- ªÑ ßá¼δ⌐ Σá⌐½, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ handle1 (stdout) */
-
- fh = dup(1);
-
- if (fh == -1)
- perror("dup(1) failure");
-
- /* ß«ºñáÑΓ handle3 Σá⌐½á ñ½∩ ßß佬¿ ¡á ëà ªÑ ßá¼δ⌐ Σá⌐½,
- ¡á ¬«Γ«αδ⌐ ßßδ½áÑΓß∩ handle 1 (stdout). àß½¿ handle3 Σá⌐½á ∩ó½∩-
- ÑΓß∩ Γá¬ªÑ «Γ¬αδΓδ¼, «¡ ºá¬αδóáÑΓß∩ »Ñαóδ¼ */
-
- fh = dup2(1,3);
-
- if (fh != 0)
- perror("dup2(1,3) failure");.
-
-
- ECVT
-
-
- #include <stdlib.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿¿
-
- - 86 -
-
-
- char *ecvt(value, ndigits, decptr,signptr);
-
- double value; »αÑ«íαáºπѼ«Ñ τ¿ß½«
-
- int ndigits; ¬«½¿τÑßΓó« ºá»«¼¿¡áѼδσ
- µ¿Σα
-
- int *decptr; π¬áºáΓѽ∞ ¡á ºá»«¼¡Ñ¡¡«Ñ
- »«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿
-
- int *signptr; π¬áºáΓѽ∞ ¡á ºá»«¼¡Ñ¡¡δ⌐
- ¿¡ñ¿¬áΓ«α º¡á¬á
-
-
- Ä»¿ßá¡¿Ñ.
- öπ¡¬µ¿∩ ecvt »αÑ«íαẫóδóáÑΓ τ¿ß½« ß »½áóáεΘÑ⌐ Γ«τ¬«⌐ ó
- ß¿¼ó«½∞¡πε ßΓ᫬π. Value - φΓ« τ¿ß½« ß »½áóáεΘÑ⌐ Γ«τ¬«⌐, ¬«Γ«α«Ñ
- ñ«½ª¡« íδΓ∞ »αÑ«íαẫóá¡«. Ecvt ºá»«¼¿¡áÑΓ µ¿Σαδ ndigits ¿º value
- ¬á¬ ßΓப㠨 ñ«íáó½∩ÑΓ ¬ ¡Ñ⌐ ¡π½Ñó«⌐ ß¿¼ó«½ ('\0'). àß½¿ ¬«½¿τÑßΓó«
- µ¿Σα ó value »αÑóδΦáÑΓ ndigits, »«ß½Ññ¡∩∩ º¡áτáΘá∩ µ¿Σαá «¬απú½∩-
- ÑΓß∩. àß½¿ µ¿Σα ¼Ñ¡∞ΦÑ, τѼ ndigits, ßΓ᫬á ñ«»«½¡∩ÑΓß∩ ¡π½∩¼¿.
- é ßΓα«¬Ñ σαá¡∩Γß∩ Γ«½∞¬« µ¿Σαδ. Å«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿
- ¿ º¡á¬á ó value ¼«ªÑΓ íδΓ∞ «»αÑñѽѡ« »«ß½Ñ ó맮óá Σπ¡¬µ¿¿ ¿º
- decptr ¿ signptr. Çαúπ¼Ñ¡Γ decptr π¬áºδóáÑΓ ¡á µÑ½«Ñ τ¿ß½«, «»αÑ-
- ñѽ∩εΘÑÑ »«½«ªÑ¡¿Ñ ñÑß∩Γ¿τ¡«⌐ Γ«τ¬¿ «Γ¡«ß¿Γѽ∞¡« ¡áτá½á ßΓ᫬¿. 0
- ¿½¿ «Γα¿µáΓѽ∞¡«Ñ º¡áτÑ¡¿Ñ «º¡áτáεΓ, τΓ« ñÑß∩Γ¿τ¡á∩ Γ«τ¬á αáß»«-
- ½«ªÑ¡á ½ÑóÑÑ »Ñαó«⌐ µ¿Σαδ. Çαúπ¼Ñ¡Γ signptr π¬áºδóáÑΓ ¡á µÑ½«Ñ,
- «»αÑñѽ∩εΘÑÑ º¡á¬ »αÑ«íαáºπѼ«ú« τ¿ß½á. àß½¿ signptr αáó¡« 0,
- τ¿ß½« »«½«ª¿Γѽ∞¡«Ñ, ¿¡áτÑ - «Γα¿µáΓѽ∞¡«Ñ.
-
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ ecvt ó«ºóαáΘáÑΓ π¬áºáΓѽ∞ ¡á ßΓα«¬π µ¿Σα. é ß½πτáÑ
- «Φ¿í¬¿ ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
- æ¼.Γá¬ªÑ atof, atoi, atol, fcvt, gcvt.
-
- çá¼Ñτá¡¿Ñ. öπ¡¬µ¿¿ ecvt ¿ fcvt ¿ß»«½∞ºπεΓ ñ½∩ »αÑ«íαẫóá-
- ¡¿∩ «ñ¿¡ ¿ ëà ªÑ ßΓáΓ¿τÑ߬¿ αáß»αÑñѽѡ¡δ⌐ íπΣÑα. èáªñ«Ñ «íαáΘÑ-
- ¡¿Ñ ¬ «ñ¡«⌐ ¿º φΓ¿σ »α«µÑñπα π¡¿τΓ«ªáÑΓ αѺπ½∞ΓáΓ »αÑñδñπΘÑú« «í-
- αáΘÑ¡¿∩.
-
-
- Åα¿¼Ñα:
-
- #include <stdlib.h>
-
- int decimal, sign;
- char *buffer;
- int preciision=10;
-
-
- buffer=ecvt(3.1415926535,precision,&decimal,&sign);
- /*íπΣÑα ß«ñÑαª¿Γ "3141592654",decimal=1,sign=0*/
-
-
- - 87 -
-
-
-
- EOF
-
- #include <io.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- int eof(handle);
- int handle; handle-α, ßßδ½áεΘ¿⌐ß∩ ¡á «Γ¬αδΓδ⌐
- Σá⌐½
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ eof «»αÑñѽ∩ÑΓ ñ«ßΓ¿ªÑ¡¿Ñ ¬«¡µá Σá⌐½á ñ½∩ Σá⌐½á,
- áßß«µ¿¿α«óá¡¡«ú« ß handle.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- ¥Γá Σπ¡¬µ¿∩ ó«ºóαáΘáÑΓ º¡áτÑ¡¿Ñ 1, Ñß½¿ ΓѬπΘá∩ »«º¿µ¿∩ ∩ó-
- ½∩ÑΓß∩ ¬«¡µ«¼ Σá⌐½á; 0 - ó »α«Γ¿ó¡«¼ ß½πτáÑ. 髺óαáΘáѼ«Ñ º¡áτÑ-
- ¡¿Ñ -1 ßó¿ñÑΓѽ∞ßΓóπÑΓ «í «Φ¿í¬Ñ; errno πßΓá¡áó½¿óáÑΓß∩ ó EBADF,
- ¿¡¿µ¿¿απ∩ »α¿ φΓ«¼ ¡ÑóÑα¡δ⌐ handle Σá⌐½á.
- æ¼. Γá¬ªÑ clearerr, feof, ferror, perror.
-
- Åα¿¼Ñα:
-
- #include <io.h>
- #include <fgntl.h>
-
- int fh, count;
- char buf[10];
-
- fh = open("data", O_RDONLY);
-
- /* ß½ÑñπεΘ¿⌐ «»ÑαáΓ«α »α«óÑα∩ÑΓ »ÑαÑñ τΓÑ¡¿Ñ¼ πß½«ó¿Ñ ¬«¡µá
- Σá⌐½á */
-
- while (!eof(fh))
- { count = read(fh, buf, 10);
- .
- .
- .
- }.
-
-
- EXECL - EXECVPE
-
-
- #include <process.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩
- «íΩ∩ó½Ñ¡¿∩ Σπ¡¬µ¿⌐
-
- int execl(pathname, arg0, arg1 ... ,argn, NULL);
-
- int execle(pathname, arg0, arg1 ... ,argn, NULL, envp);
-
- int execlp(pathname, arg0, arg1 ... ,argn, NULL);
-
- - 88 -
-
-
-
- int execlpe(pathname, arg0, arg1 ... ,argn, NULL, envp);
-
- int execv(pathname, argv);
-
- int execve(pathname, argv, envp);
-
- int execvp(pathname, argv);
-
- int exevpe(pathname, argv, envp);
-
- char *pathname; path-¿¼∩ óδ»«½¡∩Ѽ«ú«
- Σá⌐½á
- char *arg0, *arg1, ..., *argn; ß»¿ß«¬ π¬áºáΓѽÑ⌐ ¡á
- áαúπ¼Ñ¡Γδ
- char *argv[]; ¼áßß¿ó π¬áºáΓѽÑ⌐ ¡á
- áαúπ¼Ñ¡Γδ
- char *envp[]; ¼áßß¿ó π¬áºáΓѽÑ⌐ ¡á
- πßΓá¡«ó½Ñ¡¡«Ñ «¬απªÑ-
- ¡¿Ñ
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ exec ºáúαπªáεΓ ¿ óδ»«½¡∩εΓ ¡«óδ⌐ child-»α«µÑßß.
- è«úñá ó맮ó »α«¿º«Φѽ πß»ÑΦ¡«, child-»α«µÑßß αẼÑΘáÑΓß∩ ó »á¼∩-
- Γ¿, ºá¡∩Γ«⌐ óδºóáóΦ¿¼ »α«µÑßß«¼. ä½∩ ºáúαπº¬¿ ¿ óδ»«½¡Ñ¡¿∩
- child-»α«µÑßßá ñ«½ª¡« íδΓ∞ ñ«ßΓπ»¡« ñ«ßΓáΓ«τ¡« »á¼∩Γ¿.
- Pathname ¼«ªÑΓ «»αÑñѽ∩Γ∞ »«½¡δ⌐ path (¿º ¬«α¡∩), τáßΓ∞
- path (¿º ΓѬπΘÑú« αáí«τÑú« ñ¿αÑ¬Γ«α¿∩) ¿½¿ »α«ßΓ« ¿¼∩ Σá⌐½á.
- àß½¿ pathname ¡Ñ ¿¼ÑÑΓ αáßΦ¿αÑ¡¿∩ ñ½∩ ¿¼Ñ¡¿ Σá⌐½á ¿½¿ Ñß½¿
- «¡« ¡Ñ ºá¬á¡τ¿óáÑΓß∩ Γ«τ¬«⌐ (.), Γ«úñá Σπ¡¬µ¿¿ exec πßΓá¡áó½¿óáεΓ
- αáßΦ¿αÑ¡¿Ñ .EXE. àß½¿ pathname ¿¼ÑÑΓ αáßΦ¿αÑ¡¿Ñ, Γ« ¿ß»«½∞ºπÑΓß∩
- Γ«½∞¬« φΓ« αáßΦ¿αÑ¡¿Ñ. àß½¿ pathname ºá¬á¡τ¿óáÑΓß∩ Γ«τ¬«⌐, exec
- «ßπΘÑßΓó½∩ÑΓ »«¿ß¬ pathname íѺ αáßΦ¿αÑ¡¿∩. Åα«µÑñπαδ execlp,
- execlpe, execvpe «ßπΘÑßΓó½∩εΓ »«¿ß¬ ñ½∩ pathname (¿ß»«½∞ºπ∩ ΓÑ ªÑ
- ßá¼δÑ »α«µÑñπαδ) ó ñ¿αÑ¬Γ«α¿∩σ, «»αÑñѽѡ¡δσ »ÑαѼѡ¡«⌐ «¬απªÑ¡¿∩
- PATH.
- Çαúπ¼Ñ¡Γδ ñ½∩ ¡«ó«ú« »α«µÑßßá »ÑαÑñáεΓß∩ ¬á¬ áαúπ¼Ñ¡Γδ ó
- ó맮óÑ exec »πΓѼ ºáñá¡¿∩ «ñ¡«ú« ¿½¿ í«½ÑÑ π¬áºáΓѽÑ⌐ ¡á ß¿¼ó«½∞-
- ¡δÑ ßΓ᫬¿. ¥Γ¿ ß¿¼ó«½∞¡δÑ ßΓ᫬¿ «íαáºπεΓ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó ñ½∩
- child-»α«µÑßßá. ÄíΘá∩ ñ½¿¡á ßΓ᫬, «»αÑñѽ∩εΘá∩ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó
- ñ½∩ ¡«ó«ú« »α«µÑßßá, ¡Ñ ¼«ªÑΓ »αÑóδΦáΓ∞ 128 íá⌐Γ«ó. ìπ½Ñó«⌐ ß¿¼-
- ó«½ «¬«¡τá¡¿∩ '\0 'ñ½∩ ¬áªñ«⌐ ßΓ᫬¿ ó φΓπ ñ½¿¡π ¡Ñ ºáßτ¿ΓδóáÑΓ-
- ß∩,á ß¿¼ó«½δ »α«íѽá (áóΓ«¼áΓ¿τÑ߬¿ óßΓáó½∩ѼδÑ ñ½∩ áαúπ¼Ñ¡Γ«ó) -
- ºáßτ¿ΓδóáεΓß∩.
- ô¬áºáΓѽ¿ áαúπ¼Ñ¡Γ«ó ¼«úπΓ »ÑαÑñáóáΓ∞ß∩ ¬á¬ «Γñѽ∞¡δÑ áαúπ-
- ¼Ñ¡Γδ (ó execl, execle, execlp, execlpe) ¿½¿ ¬á¬ ¼áßß¿ó π¬áºáΓÑ-
- ½Ñ⌐ (ó execv, execve, execvp, execvpe). Å« ¬αá⌐¡Ñ⌐ ¼ÑαÑ «ñ¿¡ áα-
- úπ¼Ñ¡Γ - arg0 ¿½¿ argv[0] - ñ«½ªÑ¡ íδΓ∞ »ÑαÑñá¡ child-»α«µÑßßπ.
- Å« ß«ú½áΦÑ¡¿ε φëà áαúπ¼Ñ¡Γ ∩ó½∩ÑΓß∩ ¬«»¿Ñ⌐ áαúπ¼Ñ¡Γá pathname.
- (äαπú«Ñ º¡áτÑ¡¿Ñ ¡Ñ íπñÑΓ ó«ß»α¿¡∩Γ« ¬á¬ «Φ¿í¬á). é óÑαß¿∩σ MS
- DOS, αá¡¡¿σ «Γ 3.0, »ÑαÑñáóáѼ«Ñ º¡áτÑ¡¿Ñ arg0 ¿½¿ argv[0] ∩ó½∩-
- ÑΓß∩ ¡Ñ ñ«ßΓπ»¡δ¼ ñ½∩ ¿ß»«½∞º«óá¡¿∩ ó child-»α«µÑßßÑ. Äñ¡á¬«, ñ½∩
- óÑαß¿⌐ MS DOS 3.0 ¿ ßΓáαΦ¿σ pathname ñ«ßΓπ»¡« ¬á¬ arg0 ¿½¿
- argv[0].
- é맮óδ execl, execle, execlp, execlpe «íδτ¡« ¿ß»«½∞ºπεΓß∩
-
- - 89 -
-
-
- Γ«úñá, ¬«úñá ¬«½¿τÑßΓó« áαúπ¼Ñ¡Γ«ó ¿ºóÑßΓ¡« ºáαá¡ÑÑ. Çαúπ¼Ñ¡Γ
- arg0 «íδτ¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á pathname. Çαúπ¼Ñ¡Γδ «Γ arg1 ñ«
- argn π¬áºδóáεΓ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ ¡«óδ⌐ ß»¿ß«¬ áα-
- úπ¼Ñ¡Γ«ó. êñπΘ¿⌐ ºá áαúπ¼Ñ¡Γ«¼ argn NULL-π¬áºáΓѽ∞ «»αÑñѽ∩ÑΓ ¬«-
- ¡Ñµ ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
- Äíδτ¡« ó맮óδ execv, execve, execvp, execvpe ¿ß»«½∞ºπεΓß∩
- Γ«úñá, ¬«úñá τ¿ß½« áαúπ¼Ñ¡Γ«ó ñ½∩ ¡«ó«ú« »α«µÑßßá ∩ó½∩ÑΓß∩ »ÑαÑ-
- ¼Ñ¡¡δ¼. ô¬áºáΓѽ¿ ¡á áαúπ¼Ñ¡Γδ »ÑαÑßδ½áεΓß∩ ¬á¬ ¼áßß¿ó argv. Çα-
- úπ¼Ñ¡Γ argv[0] «íδτ¡« ∩ó½∩ÑΓß∩ π¬áºáΓѽѼ ¡á pathname. Çαúπ¼Ñ¡Γδ
- «Γ argv[1] ñ« argv[n] π¬áºδóáεΓ ¡á ß¿¼ó«½∞¡δÑ ßΓ᫬¿, «íαáºπεΘ¿Ñ
- ¡«óδ⌐ ß»¿ß«¬ áαúπ¼Ñ¡Γ«ó. Çαúπ¼Ñ¡Γ argv[n+1] ñ«½ªÑ¡ íδΓ∞ NULL-π¬á-
- ºáΓѽѼ ñ½∩ «»αÑñѽѡ¿∩ ¬«¡µá ß»¿ß¬á áαúπ¼Ñ¡Γ«ó.
- öá⌐½δ, «Γ¬αδΓδÑ ñ« ó맮óá exec, «ßΓáεΓß∩ «Γ¬αδΓ묨 ¿ ó ¡«-
- ó«¼ »α«µÑßßÑ. é ó맮óáσ execl, execlp, execv, execvp child-»α«-
- µÑßß ¡áß½ÑñπÑΓ «¬απªÑ¡¿Ñ parent-»α«µÑßßá. é맮óδ execle, execlpe,
- execve, execvpe »«ºó«½∩εΓ »«½∞º«óáΓÑ½ε ¿º¼Ñ¡∩Γ∞ «¬απªÑ¡¿Ñ ñ½∩
- child-»α«µÑßßá, »ÑαÑñáóá∩ ß»¿ß«¬ πßΓá¡«ó½Ñ¡¡«ú« «¬απªÑ¡¿∩ τÑαѺ
- áαúπ¼Ñ¡Γ envp.
- Çαúπ¼Ñ¡Γ envp ∩ó½∩ÑΓß∩ ¼áßß¿ó«¼ π¬áºáΓѽÑ⌐ ¡á char, ¬áªñδ⌐
- φ½Ñ¼Ñ¡Γ ¬«Γ«α«ú« (¿ß¬½ετá∩ »«ß½Ññ¡¿⌐ φ½Ñ¼Ñ¡Γ) π¬áºδóáÑΓ ¡á ßΓα«-
- ¬π, ¬«Γ«αá∩ ºá¬á¡τ¿óáÑΓß∩ ¡π½Ñ¼ ¿ «»αÑñѽ∩ÑΓ »ÑαѼѡ¡πε «¬απªÑ-
- ¡¿∩. Äíδτ¡« φΓá ßΓα«¬á ¿¼ÑÑΓ Σ«α¼π:
-
- NAME = value ,
-
- úñÑ NAME - ¿¼∩ »ÑαѼѡ¡«⌐ «¬απªÑ¡¿∩, value - º¡áτÑ¡¿Ñ ßΓα«-
- ¬¿ (ºá¼ÑΓ¿¼, τΓ« value ¡Ñ ºá¬½ετáÑΓß∩ ó ¬áóδτ¬¿ "..."). ū߽Ññ-
- ¡¿¼ φ½Ñ¼Ñ¡Γ«¼ ¼áßß¿óá envp ñ«½ªÑ¡ íδΓ∞ NULL.
- àß½¿ º¡áτÑ¡¿Ñ¼ envp ∩ó½∩ÑΓß∩ NULL, child-»α«µÑßß ¡áß½ÑñπÑΓ
- πßΓá¡«ó½Ñ¡¡«Ñ «¬απªÑ¡¿Ñ parent-»α«µÑßßá.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿¿ exec ¡Ñ ¿¼ÑεΓ ¡«α¼á½∞¡«ú« ó«ºóαáΓá ó óδºδóáεΘ¿⌐
- »α«µÑßß. àß½¿ ¿º Σπ¡¬µ¿¿ exec »α«¿ßσ«ñ¿Γ ó«ºóαáΓ, Γ« φΓ« «º¡áτáÑΓ
- «Φ¿í¬π ¿ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ αáó¡« -1. ÅÑαѼѡ¡á∩ errno »α¿
- φΓ«¼ πßΓá¡áó½¿óáÑΓß∩ ó «ñ¡« ¿º ß½ÑñπεΘ¿σ º¡áτÑ¡¿⌐:
-
-
- çìÇùàìêà æî¢æï çìÇùàìêƒ
-
-
- E2BIG 滿߫¬ áαúπ¼Ñ¡Γ«ó »αÑóδΦáÑΓ 128 íá⌐Γ,
- ¿½¿ »α«ßΓαá¡ßΓó«, ΓαÑíπѼ«Ñ ñ½∩
- ¿¡Σ«α¼áµ¿¿ «¬απªÑ¡¿∩, »αÑóδΦáÑΓ 32è
-
- EACCES ü½«¬¿α«ó¬á ¿½¿ αáºñѽѡ¿Ñ Σá⌐½á (ñ½∩
- óÑαß¿⌐ 3.0 ¿ ßΓáαΦ¿σ)
-
- EMFILE î¡«ú« «Γ¬αδΓδσ Σá⌐½«ó (߻ѵ¿Σ¿µ¿α«óá¡-
- ¡δ⌐ Σá⌐½ ñ«½ªÑ¡ íδΓ∞ «Γ¬αδΓ, τΓ«íδ
- ¡áτáΓ∞ Ñú« óδ»«½¡Ñ¡¿Ñ)
-
- ENOENT öá⌐½ ¿½¿ path-¿¼∩ ¡Ñ ¡á⌐ñÑ¡«
-
-
- - 90 -
-
-
- ENOEXEC çáñá¡¡δ⌐ Σá⌐½ ¡Ñ ∩ó½∩ÑΓß∩ óδ»«½¡∩Ѽδ¼
- ¿½¿ ¿¼ÑÑΓ ¡ÑóÑα¡δ⌐ Σ«α¼áΓ
-
- ENOMEM ä«ßΓπ»¡«⌐ »á¼∩Γ¿ ¡Ñ ñ«ßΓáΓ«τ¡« ñ½∩
- óδ»«½¡Ñ¡¿∩ child-»α«µÑßá; ¿½¿ ñ«ßΓπ»¡á∩
- »á¼∩Γ∞ ∩ó½∩ÑΓß∩ ºá»«ατÑ¡¡«⌐; ¿½¿
- ßπΘÑßΓóπεΓ ¡ÑóÑα¡δÑ í½«¬¿, π¬áºδóáεΘ¿Ñ,
- τΓ« parent-»α«µÑßß ¡ÑóÑα¡« αẼÑΘÑ¡
-
- æ¼. Γá¬ªÑ abort, exit, _exit, onexit, spawnl, spawnle,
- spawnlp, spawnlpe, spawnv, spawnve, spawnvp, spawnvpe, system.
- çá¼Ñτá¡¿Ñ. é맮óδ exec ¡Ñ ß«σαá¡∩εΓ ΓѬßΓ«óδ⌐ αѪ¿¼ »αÑ«í-
- αẫóá¡¿∩ ñ½∩ «Γ¬αδΓδσ Σá⌐½«ó. àß½¿ child-»α«µÑßß ñ«½ªÑ¡ ¿ß»«½∞-
- º«óáΓ∞ Σá⌐½δ, π¡áß½Ññ«óá¡¡δÑ «Γ parent-»α«µÑßßá, Γ«úñá ñ«½ª¡á
- íδΓ∞ ¿ß»«½∞º«óá¡á »α«µÑñπαá setmode ñ½∩ πßΓá¡«ó¬¿ ΓαÑíπѼ«ú« αÑ-
- ª¿¼á »αÑ«íαẫóá¡¿∩ ñ½∩ φΓ¿σ Σá⌐½«ó.
- ôßΓá¡«ó¬¿ ß¿ú¡á½«ó »αÑαδóá¡¿∩ ¡Ñ ß«σαá¡∩εΓß∩ ó child-»α«-
- µÑßßÑ, ß«ºñá¡¡«¼ óδº«ó«¼ »α«µÑñπαδ exec. ¥Γ¿ πßΓá¡«ó¬¿ »ÑαÑπßΓá-
- ¡áó½¿óáεΓß∩ »« π¼«½τá¡¿ε ó child-»α«µÑßßÑ.
-
- Åα¿¼Ñα:
-
- #include <process.h>
- #include <stdio.h>
-
- extern char **environ;
-
- char *args[4];
- int result;
-
- args[0] = "child";
- args[1] = "one";
- args[2] = "two";
- args[3] = NULL;
-
- /* óßÑ ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ »«ºó«½∩εΓ óδ»«½¡∩Γ∞ »α«µÑßß,
- ¡áºóá¡¡δ⌐ "child.exe", ¿ »ÑαÑñáΓ∞ Ѽπ Γα¿ áαúπ¼Ñ¡Γá. */
-
-
- result = execl("child.exe", "child", "one", "two",
- NULL);
- result = execle("child.exe", "child", "one", "two",
- NULL, environ);
- result = execlp("child.exe", "child", "one", "two",
- NULL);
- result = execv("child.exe", args);
- result = execve("child.exe", args, environ);
- result = execvp("child.exe", args);.
-
-
- EXIT - _EXIT
-
- #include <process.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
- #include <stdlib.h> ¿ß»«½∞ºπÑΓ ½¿í« <process.h>,
-
- - 91 -
-
-
- ½¿í« <stdlib.h>
-
- void exit(status); ºáóÑαΦáÑΓ »α«µÑßß »«ß½Ñ ºá¬αδ-
- Γ¿∩ Σá⌐½á
-
- void _exit(status); ºáóÑαΦáÑΓ »α«µÑßß íѺ «í¡«ó½Ñ-
- ¡¿∩ íπΣÑα«ó »«Γ«¬á
- int status; ßΓáΓπß óδσ«ñá
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿¿ exit ¿ _exit ºáóÑαΦáεΓ óδºóá¡¡δ⌐ »α«µÑßß. ÅÑαÑñ ºá-
- óÑαΦÑ¡¿Ñ¼ »α«µÑßßá Σπ¡¬µ¿∩ exit «í¡«ó½∩ÑΓ óßÑ íπΣÑαδ ¿ ºá¬αδóáÑΓ
- óßÑ «Γ¬αδΓδÑ Σá⌐½δ. öπ¡¬µ¿∩ _exit ºáóÑαΦáÑΓ óßÑ »α«µÑßßδ íѺ «í-
- ¡«ó½Ñ¡¿∩ íπΣÑα«ó »«Γ«¬á. ç¡áτÑ¡¿Ñ status «íδτ¡« πßΓá¡áó½¿óáÑΓß∩ ó
- 0 ñ½∩ π¬áºá¡¿∩ ¡«α¼á½∞¡«ú« óδσ«ñá ¿ πßΓá¡áó½¿óáÑΓß∩ ó ½εí«Ñ ñαπ-
- ú«Ñ º¡áτÑ¡¿Ñ ñ½∩ «»αÑñѽѡ¿∩ «Φ¿í¬¿. ū߬«½∞¬π ó맮óδ exit ¿
- _exit ¡Ñ ó«ºóαáΘáεΓ º¡áτÑ¡¿∩, ¼½áñΦ¿⌐ íá⌐Γ status ∩ó½∩ÑΓß∩ ó«ºó-
- αáΓ«¼ ñ½∩ «ª¿ñáεΘÑú« parent-»α«µÑßßá. àß½¿ ¡ÑΓ parent-»α«µÑßßá,
- Γ« º¡áτÑ¡¿Ñ status ΓÑα∩ÑΓß∩.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- 髺óαáΘáѼ«ú« º¡áτÑ¡¿∩ ¡ÑΓ.
- æ¼.Γá¬ªÑ abort, execl, execle, execlp, execv, execve,
- execvp, onexit, spawnl, spawnle, spawnlp, spawnv, spawnve,
- spawnvp, system.
-
- Åα¿¼Ñα:
-
- #include <process.h>
- #include <stdio.h>
-
- FILE *stream;
- .
- .
- .
-
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óδºδóáεΓ ºáóÑαΦÑ¡¿Ñ »α«µÑßßá »«ß½Ñ
- «í¡«ó½Ñ¡¿∩ íπΣÑα«ó ¿ ºá¬αδΓ¿∩ «Γ¬αδΓδσ Σá⌐½«ó */
-
- if((stream=fopen("data","r"))==NULL) {
- fprintf(stderr,"couldn't open data file\n");
- exit (1);
- }
- /* ß½ÑñπεΘ¿Ñ «»ÑαáΓ«αδ óδºδóáεΓ ¡Ñ¼Ññ½Ñ¡¡«Ñ ºáóÑαΦÑ¡¿Ñ »α«-
- µÑßßá, Ñß½¿ Σá⌐½ ¡Ñ ¼«ªÑΓ íδΓ∞ «Γ¬αδΓδ¼ */
-
- if((stream=fopen("data","r"))==NULL)
-
- {
-
- fprintf(stderr,"couldn't open data file\n");
- _exit (1);
-
- }
-
-
- - 92 -
-
-
- EXP
-
-
- #include <math.h>
-
- double exp(x);
- double x; º¡áτÑ¡¿Ñ ß »½áóáεΘÑ⌐ Γ«τ¬«⌐
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ exp ó«ºóαáΘáÑΓ φ¬ß»«¡Ñ¡µ¿á½∞¡πε Σπ¡¬µ¿ε ßó«Ñú« áα-
- úπ¼Ñ¡Γá x ß »½áóáεΘÑ⌐ Γ«τ¬«⌐.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ exp ó«ºóαáΘáÑΓ e ó ßΓѻѡ¿ x. Åα¿ »ÑαÑ»«½¡Ñ¡¿¿ Σπ¡-
- ¬µ¿∩ ó«ºóαáΘáÑΓ HUGE ¿ πßΓá¡áó½¿óáÑΓ errno ó ERANGE, »α¿ »«ΓÑαÑ
- º¡áτ¿¼«ßΓ¿ exp ó«ºóαáΘáÑΓ 0, ¡« ¡Ñ πßΓá¡áó½¿óáÑΓ errno.
- æ¼.Γá¬ªÑ log.
-
- Åα¿¼Ñα:
-
- #include <math.h>
-
- double x,y;
- .
- .
- .
- y = exp(x);.
-
-
-
- _EXPAND
-
-
- #include <malloc.h> ΓαÑíπÑΓß∩ Γ«½∞¬« ñ½∩ «íΩ∩ó½Ñ¡¿∩
- Σπ¡¬µ¿¿
-
- char *_expand(ptr,size);
- char *ptr; π¬áºáΓѽ∞ ¡á αá¡ÑÑ ºáσóáτÑ¡¡δ⌐
- í½«¬ »á¼∩Γ¿
- unsigned size; ¡«óδ⌐ αẼÑα ó íá⌐Γáσ
-
-
- Ä»¿ßá¡¿Ñ.
-
- öπ¡¬µ¿∩ _expand ¿º¼Ñ¡∩ÑΓ αẼÑα αá¡ÑÑ ºáσóáτÑ¡¡δσ í½«¬«ó
- »á¼∩Γ¿, »δΓá∩ß∞ αáßΦ¿α¿Γ∞ ¿½¿ ßπº¿Γ∞ í½«¬ íѺ »ÑαÑñó¿ªÑ¡¿∩ Ñú«
- ¼ÑßΓ«»«½«ªÑ¡¿∩ ó heap.
- Çαúπ¼Ñ¡Γ ptr π¬áºδóáÑΓ ¡á ¡áτὫ í½«¬á. Çαúπ¼Ñ¡Γ size ºáñá-
- ÑΓ ¡«óδ⌐ αẼÑα í½«¬á ó íá⌐Γáσ. æ«ñÑন¼«Ñ í½«¬«ó ¡Ñ ¿º¼Ñ¡∩ÑΓß∩.
- Çαúπ¼Ñ¡Γ ptr Γá¬ªÑ π¬áºδóáÑΓ ¡á «ßó«í«ªñáεΘ¿⌐ß∩ í½«¬ ñ« ΓÑσ
-
- - 93 -
-
-
- »«α, »«¬á ¡Ñ íπñπΓ ó¡ÑΦ¡Ñ óδºóá¡δ calloc, _expand, halloc, malloc
- ¿½¿ realloc, ½¿í« »«¬á í½«¬ íπñÑΓ ßó«í«ñÑ¡.
- àß½¿ ptr π¬áºδóáÑΓ ¡á «ßó«í«ªñÑ¡¡δ⌐ í½«¬, Γ« φΓ«Γ í½«¬ «ß-
- ΓáÑΓß∩ ßó«í«ñ¡δ¼ ¿ »«ß½Ñ ó맮óá _expand.
-
- 髺óαáΘáѼ«Ñ º¡áτÑ¡¿Ñ.
-
- öπ¡¬µ¿∩ _expand ó«ºóαáΘáÑΓ char-π¬áºáΓѽ∞ ¡á »ÑαѺáσóáτÑ¡-
- ¡δ⌐ í½«¬ »á¼∩Γ¿. é «Γ½¿τ¿¿ «Γ realloc, _expand ¡Ñ ¼«ªÑΓ »ÑαÑñó¿-
- úáΓ∞ í½«¬ ¿ ¿º¼Ñ¡∩Γ∞ Ñú« αẼÑαδ. ¥Γ« «º¡áτáÑΓ, τΓ« áαúπ¼Ñ¡Γ ptr
- ñ½∩ _expand ∩ó½∩ÑΓß∩ ΓѼ ªÑ ßá¼δ¼, τΓ« ¿ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ,
- Ñß½¿ »á¼∩Γ¿ ñ«ßΓáΓ«τ¡«, τΓ«íδ αáßΦ¿α¿Γ∞ í½«¬ íѺ Ñú« »ÑαÑñó¿ªÑ-
- ¡¿∩.
- 髺óαáΘáÑΓß∩ º¡áτÑ¡¿Ñ NULL, Ñß½¿ »á¼∩Γ¿ ¡Ññ«ßΓáΓ«τ¡« ñ½∩
- αáßΦ¿αÑ¡¿∩ í½«¬á. é φΓ«¼ ß½πτáÑ «íΩѬΓ, ¡á ¬«Γ«αδ⌐ π¬áºδóáÑΓ ptr,
- íπñÑΓ αáßΦ¿αÑ¡ ¡áßΓ«½∞¬«, ¡á߬«½∞¬« »«ºó«½∩ÑΓ Ñú« αáß»«½«ªÑ¡¿Ñ.
- é »á¼∩Γ¿, ¡á ¬«Γ«απε π¬áºδóáÑΓ ó«ºóαáΘáѼ«Ñ º¡áτÑ¡¿Ñ, úá-
- αá¡Γ¿α«óá¡« óδαáó¡¿óá¡¿Ñ ñ½∩ σαá¡Ñ¡¿∩ ½εí«ú« Γ¿»á «íΩѬΓá.
- ì«óδ⌐ αẼÑα «íΩѬΓá ¼«ªÑΓ íδΓ∞ »α«óÑαÑ¡ Σπ¡¬µ¿Ñ⌐ _msize.
- ùΓ«íδ »«½πτ¿Γ∞ π¬áºáΓѽ∞, Γ¿» ¬«Γ«α«ú« «Γ½¿τÑ¡ «Γ char, ¿ß-
- »«½∞ºπÑΓß∩ »αÑ«íαẫóáΓѽ∞ Γ¿»á ó«ºóαáΘáѼ«ú« º¡áτÑ¡¿∩.
- æ¼.Γá¬ªÑ calloc, free, halloc, malloc, _msize, realloc.
-
-
- Åα¿¼Ñα:
-
- #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));
- }
-
-
-
-