Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ для ΠΏΠ΅Ρ€ΡΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 46

Автор C. Π‘ΠΎΡ‡ΠΊΠΎΠ²

БистСма программирования Π’Π‘ прСдоставляСт Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС strtod ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° double (ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности atof) strtol ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° long (ΠΏΠΎΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ возмоТности atol) strtoul ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ строки Π² число Ρ‚ΠΈΠΏΠ° unsigned long

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ всСх пСрСчислСнных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ stdlib.h. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ atof содСрТится, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Ρ„Π°ΠΉΠ»Π΅ math.h.

Π Π°Π±ΠΎΡ‚Π° с ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°ΠΌΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС chdir ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° getcwd ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ имя Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° mkdir ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ rmdir ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°

БистСма программирования Π’Π‘ прСдоставляСт, ΠΊΡ€ΠΎΠΌΠ΅ пСрСчислСнных, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС findfirst Π½Π°Ρ‡Π°Π»ΠΎ поиска Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈΠΌΠ΅Π½ΠΈ findnext ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ поиска Ρ„Π°ΠΉΠ»Π° ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ ΠΈΠΌΠ΅Π½ΠΈ fnmerge созданиС ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈΠ· ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ fnsplit Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ getcurdir ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ getdisk ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ устройство searchpath поиск Ρ„Π°ΠΉΠ»Π° Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°Ρ… setdisk Π·Π°Π΄Π°Ρ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ устройство

Π’ систСмС программирования MSC ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ direct.h, Π² систСмС программирования Π’Π‘ ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ dir.h.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС access ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ chmod ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ filelength ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠ΅ Π΄Π»ΠΈΠ½Ρ‹ Ρ„Π°ΠΉΠ»Π° isatty ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, являСтся Π»ΠΈ устройство ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ mktemp гСнСрация ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ Ρ„Π°ΠΉΠ»Π° remove ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° rename ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π° setmode ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ значСния для ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Ρ„Π°ΠΉΠ»Π°

БистСма программирования MSC прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС chsize ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Ρ„Π°ΠΉΠ»Π° fstat ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»Π΅ locking Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π² Ρ„Π°ΠΉΠ»Π΅ (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с вСрсиСй ОБ MS-DOS 3.0 ΠΈ Π²Ρ‹ΡˆΠ΅), Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ запрСщая ΠΊ Π½Π΅ΠΉ доступ со стороны Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов, ΠΈΠ»ΠΈ ΠΎΡ‚ΠΏΠΈΡ€Π°Π΅Ρ‚ эту ΠΎΠ±Π»Π°ΡΡ‚ΡŒ slat ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ„Π°ΠΉΠ»Π΅ umask установка маски для Π²Ρ‹Π±ΠΎΡ€Π° Ρ€Π΅ΠΆΠΈΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ unlink ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΉΠ»Π°

БистСма программирования Π’Π‘ прСдоставляСт Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Ѐункция ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ описаниС chmod ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€Π°Π² доступа ΠΊ Ρ„Π°ΠΉΠ»Ρƒ lock Π·Π°ΠΏΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ»Π° для доступа со стороны Π΄Ρ€ΡƒΠ³ΠΈΡ… процСссов (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с вСрсиСй MS-DOS 3.0 ΠΈ Π²Ρ‹ΡˆΠ΅) unlock ΠΎΡ‚ΠΏΠΈΡ€Π°Π΅Ρ‚ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ (Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с вСрсиСй MS-DOS 3.0 ΠΈ Π²Ρ‹ΡˆΠ΅)

ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fstat ΠΈ stat, содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ io.h; ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ fstat ΠΈ stat описаны Π² Ρ„Π°ΠΉΠ»Π΅ sys\stat.h.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ access, chmod, rename, stat ΠΈ unlink ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· имя ΠΏΡƒΡ‚ΠΈ (pathname) -ΠΈΠ»ΠΈ Ρ‡Π΅Ρ€Π΅Π· имя Ρ„Π°ΠΉΠ»Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ chsize, filelength, isatty, locking, setmode, fstat Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ дСскрипторами (handle) (смотри Π΄Π°Π»Π΅Π΅ описаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня).

Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π° ΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π‘ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΡ… с устройств Π²Π²ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹) ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Ρ‹, ΠΈΠ»ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΡ… Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ устройства (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π½Π° ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° дСлятся Π½Π° Ρ‚Ρ€ΠΈ класса:

1) Π’Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня (с использованиСм понятия "ΠΏΠΎΡ‚ΠΎΠΊ").

2) Π’Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ для консольного Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»Π° ΠΏΡƒΡ‚Π΅ΠΌ нСпосрСдствСнного обращСния ΠΊ Π½Π΅ΠΌΡƒ.

3) Π’Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ Π½ΠΈΠΆΠ½Π΅Π³ΠΎ уровня (с использованиСм понятия "дСскриптор").

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ Π΅ΡΡ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΠΎΡ€Ρ‚ΠΎΠΌ (БОМ), ΠΎΠ½ΠΈ отнСсСны условно ΠΊΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΠ΅.

Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° производится Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ запись ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ», ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ осущСствляСтся Π½Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ, располоТСнным Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Если производится опСрация записи Π² Ρ„Π°ΠΉΠ», Ρ‚ΠΎ информация ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π° записываСтся Π² Ρ„Π°ΠΉΠ» ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π° ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠ°ΠΊΠΈΡ…-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… условий, смотри Π½ΠΈΠΆΠ΅). Если информация считываСтся ΠΈΠ· Ρ„Π°ΠΉΠ»Π°, Ρ‚ΠΎ ΠΎΠ½Π° Π½Π° самом Π΄Π΅Π»Π΅ бСрСтся ΠΈΠ· Π±ΡƒΡ„Π΅Ρ€Π°, Π° Π² Π±ΡƒΡ„Π΅Ρ€ информация считываСтся ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΈ впослСдствии ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ исчСрпании (ΠΎΠΏΡƒΡΡ‚ΠΎΡˆΠ΅Π½ΠΈΠΈ) Π±ΡƒΡ„Π΅Ρ€Π°. БуфСризация Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° выполняСтся автоматичСски, ΠΎΠ½Π° позволяСт ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π·Π° счСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΡ количСства ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ ΡΡ€Π°Π²Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΌ внСшним устройствам.

Для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Ρ„Π°ΠΉΠ», ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅, прСдставляСтся ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ считываСмых ΠΈΠ»ΠΈ записываСмых Π±Π°ΠΉΡ‚ΠΎΠ². Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚Ρ€Π°Π·ΠΈΡ‚ΡŒ эту ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ понятиС "ΠΏΠΎΡ‚ΠΎΠΊ" (соотвСтствуСт английскому слову stream). Когда Ρ„Π°ΠΉΠ» открываСтся, с Π½ΠΈΠΌ связываСтся ΠΏΠΎΡ‚ΠΎΠΊ, выводимая информация записываСтся "Π² ΠΏΠΎΡ‚ΠΎΠΊ", считываСмая информация бСрСтся "ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ°".

Когда ΠΏΠΎΡ‚ΠΎΠΊ открываСтся для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°, ΠΎΠ½ связываСтся со структурой Ρ‚ΠΈΠΏΠ° FILE (имя Ρ‚ΠΈΠΏΠ° FILE опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ конструкции typedef Π² Ρ„Π°ΠΉΠ»Π΅ stdio.h). Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° содСрТит Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fopen возвращаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° структуру Ρ‚ΠΈΠΏΠ° FILE. Π­Ρ‚ΠΎΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠ°) ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ обязан Π²Π½ΠΈΠΊΠ°Ρ‚ΡŒ Π² способ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠ°, ΠΎΠ½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ всСм Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅Ρ‡Π½Ρ‹ΠΌ функциям, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΌ для Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Ρ‡Π΅Ρ€Π΅Π· этот ΠΏΠΎΡ‚ΠΎΠΊ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²/Π² Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π΄Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ для Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΈ Π½Π΅Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π°.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²/Π² Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня относятся ΠΊ числу Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ОБ ΠΈ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°Ρ…, с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ пСрСносимыС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° для консоли ΠΈ ΠΏΠΎΡ€Ρ‚Π° Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡŽΡ‚ возмоТности Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня Π½Π° этот класс устройств, добавляя Π½ΠΎΠ²Ρ‹Π΅ возмоТности.

Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Π½Π° консоль (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π») ΠΈΠ»ΠΈ Π² ΠΏΠΎΡ€Ρ‚ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΡ€Ρ‚ ΠΏΡ€ΠΈΠ½Ρ‚Π΅Ρ€Π°). Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²/Π² с ΠΏΠΎΡ€Ρ‚ΠΎΠΌ Ρ‡ΠΈΡ‚Π°ΡŽΡ‚ ΠΈΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠ±Π°ΠΉΡ‚Π½ΠΎ. НСкоторыС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π΅ΠΆΠΈΠΌΡ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ для Π²/Π² с консоли (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: Π²Π²ΠΎΠ΄ с эхо-ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒΡŽ символов ΠΈ Π±Π΅Π· эхо-ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ).

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²/Π² для консоли ΠΈ ΠΏΠΎΡ€Ρ‚Π° ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ для ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Ρ‚ΠΈΠΏΠ° IBM/PC.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²/Π² Π½ΠΈΠ·ΠΊΠΎΠ³ΠΎ уровня Π½Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ Π±ΡƒΡ„Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ…; ΠΎΠ½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ нСпосрСдствСнно ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ срСдствами Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмы.

ΠŸΡ€ΠΈ Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° (ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ open) с Π½ΠΈΠΌ связываСтся дСскриптор (handle). ДСскриптор являСтся Ρ†Π΅Π»Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ… систСмы. ДСскриптор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… опСрациях с Ρ„Π°ΠΉΠ»ΠΎΠΌ.