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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования Π‘ΠΈ. ИзданиС 3-Π΅, исправлСнноС». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 76

Автор Π‘Ρ€Π°ΠΉΠ°Π½ ΠšΠ΅Ρ€Π½ΠΈΠ³Π°Π½

if (setjmp() == 0)

    /* послС прямого Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° */

else

    /* послС Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈΠ· longjmp */


void longjmp(jmp_buf env, int val);

longjmp восстанавливаСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, ΡΠΎΡ…Ρ€Π°Π½Π΅Π½Π½ΡƒΡŽ Π² самом послСднСм Π²Ρ‹Π·ΠΎΠ²Π΅ setjmp, ΠΏΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· env; Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ возобновляСтся, ΠΊΠ°ΠΊ Ссли Π±Ρ‹ функция setjmp Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π° ΠΈ Π²Π΅Ρ€Π½ΡƒΠ»Π° Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ val. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ нСпрСдсказуСмым, Ссли Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния ΠΊ longjmp функция, содСрТащая Π²Ρ‹Π·ΠΎΠ² setjmp, ΡƒΠΆΠ΅ "ΠΎΡ‚Ρ€Π°Π±ΠΎΡ‚Π°Π»Π°" ΠΈ осущСствила Π²ΠΎΠ·Π²Ρ€Π°Ρ‚. ДоступныС Π΅ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚Π΅ значСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ обращСния ΠΊ longjmp; setjmp Π½Π΅ сохраняСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ.

B9. Π‘ΠΈΠ³Π½Π°Π»Ρ‹: <signal.h>

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <signal.h> прСдоставляСт срСдства для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ситуаций, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅, Π²Ρ‹Π·Π²Π°Π½Π½ΠΎΠ΅ внСшним источником ΠΈΠ»ΠΈ ошибкой Π² вычислСниях.

void (*signal(int sig, void (*handler)(int)))(int)

signal устанавливаСт, ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ сигналы. Если ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ handler ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ SIG_DFL, Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ зависимая ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ "ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"; Ссли Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ handler Ρ€Π°Π²Π½ΠΎ SIG_IGN, Ρ‚ΠΎ сигнал игнорируСтся; Π² ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ… случаях Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ handler с Ρ‚ΠΈΠΏΠΎΠΌ сигнала Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°. Π’ число допустимых Π²ΠΈΠ΄ΠΎΠ² сигналов входят:

SIGABRT Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ abort; SIGFPE арифмСтичСская ошибка: Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° 0 ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅; SIGILL Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (нСдопустимая ΠΊΠΎΠΌΠ°Π½Π΄Π°); SIGINT запрос Π½Π° взаимодСйствиС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π΅Ρ€Ρ‹Π²Π°Π½ΠΈΠ΅; SIGSEGV Π½Π΅Π²Π΅Ρ€Π½Ρ‹ΠΉ доступ ΠΊ памяти, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Ρ…ΠΎΠ΄ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹; SIGTERM Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, посланноС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

signal Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ handler Π² случаС спСцифицированного сигнала, ΠΈΠ»ΠΈ SIGERR Π² случаС возникновСния ошибки.

Когда Π² дальнСйшСм появляСтся сигнал sig, сначала восстанавливаСтся Π³ΠΎΡ‚ΠΎΠ²Π½ΠΎΡΡ‚ΡŒ повСдСния "ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ", послС Ρ‡Π΅Π³ΠΎ вызываСтся функция, заданная Π² ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π΅ handler, Ρ‚.Π΅. ΠΊΠ°ΠΊ Π±Ρ‹ выполняСтся Π²Ρ‹Π·ΠΎΠ² (*handler)(sig). Если функция handler Π²Π΅Ρ€Π½Π΅Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π°Π·Π°Π΄, Ρ‚ΠΎ вычислСния возобновятся с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ застал ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈΡˆΠ΅Π΄ΡˆΠΈΠΉ сигнал. ΠΠ°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ состояниС сигналов зависит ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

int raise(int sig)

raise посылаСт Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ сигнал sig. Π’ случаС Π½Π΅ΡƒΠ΄Π°Ρ‡ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.  

B10. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: β€Ήtime.hβ€Ί

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <time.h> ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏΡ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, связанныС с Π΄Π°Ρ‚ΠΎΠΉ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ. НСкоторыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с мСстным Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π² связи с Π·ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ΠΈΠΏΡ‹ clосk_t ΠΈ time_t - арифмСтичСскиС Ρ‚ΠΈΠΏΡ‹ для прСдставлСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, a struct tm содСрТит ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ:

int tm_sec; - сСкунды ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ (0,61); -- I.B.: всС ΠΆΠ΅ Π½Π°Π²Π΅Ρ€Π½ΠΎ ΠΎΡ‚ 0 Π΄ΠΎ 59

int tm_min; - ΠΌΠΈΠ½ΡƒΡ‚Ρ‹ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° часа (0,59);

int tm_hour; - часы ΠΎΡ‚ ΠΏΠΎΠ»ΡƒΠ½ΠΎΡ‡ΠΈ (0,23);int tm_mday; - число мСсяца (1,31);

int tm_mon; - мСсяцы с января(0,11);

int tm_year; - Π³ΠΎΠ΄Ρ‹ с 1900;

int tm_wday; - Π΄Π½ΠΈ с Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΡ (0,6);

int tm_yday; - Π΄Π½ΠΈ с 1 января (0,365);

int tm_isdst; - ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π»Π΅Ρ‚Π½Π΅Π³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ tm_isdst - ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Ссли врСмя приходится Π½Π° сСзон, ΠΊΠΎΠ³Π΄Π° врСмя суток сдвинуто Π½Π° 1 час Π²ΠΏΠ΅Ρ€Π΅Π΄, Π½ΡƒΠ»ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΈ ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅, Ссли информация Π½Π΅ доступна.

clock_t clock(void)

clock Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ врСмя, фиксируСмоС процСссором ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈΠ»ΠΈ -1, Ссли ΠΎΠ½ΠΎ Π½Π΅ извСстно. Для выраТСния этого Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π² сСкундах примСняСтся Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° clock()/CLOCKS_PER_SEC.

time_t time(time_t *tp)

time Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя (Ρ‚. Π΅. врСмя, ΠΏΡ€ΠΎΡˆΠ΅Π΄ΡˆΠ΅Π΅ послС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ Π΄Π°Ρ‚Ρ‹, - ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ послС 0 Ρ‡ 00 ΠΌΠΈΠ½ 00 с GMT 1-Π³ΠΎ января 1970 Π³. - ΠΏΡ€ΠΈΠΌΠ΅Ρ‡. Ρ€Π΅Π΄.) ΠΈΠ»ΠΈ -1, Ссли врСмя Π½Π΅ извСстно. Если tp Π½Π΅ Ρ€Π°Π²Π½ΠΎ NULL, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ записываСтся ΠΈ Π² *tp.

double difftime(time_t time2, time_t time1)

difftime Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ€Π°Π·Π½ΠΎΡΡ‚ΡŒ time2 - time1, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½ΡƒΡŽ Π² сСкундах.

time_t mktime(struct tm *tp)

mktime ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ мСстноС врСмя, Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ структурой *tp, Π² ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅, выдавая Π΅Π³ΠΎ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅, Ρ‡Ρ‚ΠΎ ΠΈ функция time. ΠšΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ значСния Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ…. Ѐункция mktime Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя ΠΈΠ»ΠΈ -1, Ссли ΠΎΠ½ΠΎ Π½Π΅ прСдставимо.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° статичСскиС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ.

char *asctime(const struct tm *tp)

asctime ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ врСмя Π² структурС *tp Π² строку Π²ΠΈΠ΄Π°

Sun Jan 3 15:14:13 1988\n\0


char *ctime(const time_t *tp)

ctime ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя Π² мСстноС, Ρ‡Ρ‚ΠΎ эквивалСнтно Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡŽ asctime(localtime(tp))

struct tm *gmtime(const time_t *tp)

gmtime ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя Π²ΠΎ ВсСмирноС ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ врСмя (Coordinated Universal Time - UTC). Выдаст NULL, Ссли UTC Π½Π΅ извСстно. Имя этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, gmtime, происходит ΠΎΡ‚ Greenwich Mean Time (срСднСС врСмя ΠΏΠΎ Гринвичскому ΠΌΠ΅Ρ€ΠΈΠ΄ΠΈΠ°Π½Ρƒ).

struct tm *localtime(const time_t *tp)

localtime ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΠΎΠ΅ врСмя *tp Π² мСстноС.

size_t strftime(char *s, size_t smax, const char *fmt, const struct tm *tp)

strftime Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π΄Π°Ρ‚Π΅ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈΠ· *tp Π² строку s согласно Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρƒ fmt, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ‰ΠΈΡ… Ρ‡Π΅Ρ€Ρ‚ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ printf. ΠžΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ символы (Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ символ '\0') ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² s. КаТдая ΠΏΠ°Ρ€Π°, состоящая ΠΈΠ· % ΠΈ Π±ΡƒΠΊΠ²Ρ‹, замСняСтся, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, с использованиСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ мСстным традициям. Π’ s размСщаСтся Π½Π΅ Π±ΠΎΠ»Π΅Π΅ smax символов; strftime Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число символов Π±Π΅Π· ΡƒΡ‡Π΅Ρ‚Π° '\0' ΠΈΠ»ΠΈ Π½ΡƒΠ»ΡŒ, Ссли число сгСнСрированных символов большС smax.

%a сокращСнноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ дня Π½Π΅Π΄Π΅Π»ΠΈ %A ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ дня Π½Π΅Π΄Π΅Π»ΠΈ %b сокращСнноС Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мСсяца %B ΠΏΠΎΠ»Π½ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ мСсяца %c мСстноС прСдставлСниС Π΄Π°Ρ‚Ρ‹ ΠΈ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ %d дСнь мСсяца (01-31) %H час (24-часовоС врСмя) (00-23) %I час (12-часовоС врСмя) (01-12) %j дСнь ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π³ΠΎΠ΄Π° (001-366) %m мСсяц (01-12) %M ΠΌΠΈΠ½ΡƒΡ‚Π° (00-59) %p мСстноС прСдставлСниС AM ΠΈΠ»ΠΈ РМ (Π΄ΠΎ ΠΈΠ»ΠΈ послС полудня) %S сСкунда (00-61) %U нСдСля ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π³ΠΎΠ΄Π° (считая, Ρ‡Ρ‚ΠΎ Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅ - 1-ΠΉ дСнь Π½Π΅Π΄Π΅Π»ΠΈ) (00-53) %w дСнь Π½Π΅Π΄Π΅Π»ΠΈ (0-6, Π½ΠΎΠΌΠ΅Ρ€ Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΡ - 0) %W нСдСля ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° Π³ΠΎΠ΄Π° (считая, Ρ‡Ρ‚ΠΎ понСдСльник - 1-ΠΉ дСнь Π½Π΅Π΄Π΅Π»ΠΈ) (00-53) %x мСстноС прСдставлСниС Π΄Π°Ρ‚Ρ‹ %X мСстноС прСдставлСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ %y Π³ΠΎΠ΄ Π±Π΅Π· указания Π²Π΅ΠΊΠ° (00-99) %Y Π³ΠΎΠ΄ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²Π΅ΠΊΠ° %Z Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·ΠΎΠ½Ρ‹, Ссли ΠΎΠ½Π° Π΅ΡΡ‚ΡŒ %% %

B11. ЗависящиС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹: <limits.h> ΠΈ <float.h>

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <limits.h> опрСдСляСт константы для Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² цСлочислСнных Ρ‚ΠΈΠΏΠΎΠ². НиТС пСрСчислСны ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΡ‹Π΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, Π½ΠΎ Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… рСализациях ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ большиС значСния.

CHAR_BIT 8 Π±ΠΈΡ‚ΠΎΠ² Π² Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ char SCHAR_MAX UCHAR_MAX ΠΈΠ»ΠΈ SCHAR_MAX максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ char CHAR_MIN 0 ΠΈΠ»ΠΈ SCHAR_MIN минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ char INT_MAX +32767 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int INT_MIN -32767 (I.B.:ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -32768) минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ int LONG_MAX +2147463647 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ long LONG_MIN -2147483647 (I.B.:ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -2147483648) минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ long SCHAR_MAX +127 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ signed char SCHAR_MIN -127 (I.B.:ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -128) минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ signed char SHRT_MAX +32767 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ short SHRT_MIN -32767 (I.B.:ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ это Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ -32768) минимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ short UCHAR_MAX 255 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ unsigned char UINT_MAX 65535 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ unsigned int ULONG_MAX 4294967295 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ unsigned long USHRT_MAX 65535 максимальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ unsigned short

ИмСна, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Π΅ Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, взяты ΠΈΠ· <float.h> ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ константами, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ Π°Ρ€ΠΈΡ„ΠΌΠ΅Ρ‚ΠΈΠΊΠ΅ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ. ЗначСния (Ссли ΠΎΠ½ΠΈ Π΅ΡΡ‚ΡŒ) ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ собой ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Π»ΠΈΡ‡ΠΈΠ½. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ΡΡ свои значСния.