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

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

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

B1.4. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° символов

int fgetc(FILE *stream);

fgetc Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ символ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° stream Π² Π²ΠΈΠ΄Π΅ unsigned char (ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ Π² int) ΠΈΠ»ΠΈ EOF, Ссли исчСрпан Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка.

char *fgets(char *s, int n, FILE *stream);

fgets Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ n-1 символов Π² массив s, прСкращая Ρ‡Ρ‚Π΅Π½ΠΈΠ΅, Ссли встрСтился символ Π½ΠΎΠ²ΠΎΠΉ строки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² массив; ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, записываСт Π² массив '\0'. Ѐункция fgets Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ s ΠΈΠ»ΠΈ, Ссли исчСрпан Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка, NULL.

int fputc(int с, FILE *stream);

fputc ΠΏΠΈΡˆΠ΅Ρ‚ символ c (ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² unsigned char) Π² stream. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ записанный символ ΠΈΠ»ΠΈ EOF Π² случаС ошибки.

int fputs(const char *s, FILE *stream);

fputs ΠΏΠΈΡˆΠ΅Ρ‚ строку s (которая ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ '\n' ) Π² stream; Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅ ΠΈΠ»ΠΈ EOF Π² случаС ошибки.

int getc(FILE *stream);

getc Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ fgetc, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ послСднСй, Ссли ΠΎΠ½Π° - макрос, stream ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°.

int getchar(void);

getchar() Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ getc(stdin).

char *gets(char *s);

gets Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ строку Π²Π²ΠΎΠ΄Π° Π² массив s, замСняя символ Π½ΠΎΠ²ΠΎΠΉ строки Π½Π° '\0'. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ s ΠΈΠ»ΠΈ, Ссли исчСрпан Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π° ошибка, NULL.

int putc(int с, FILE *stream);

putc Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ fputc, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ послСднСй, Ссли putc - макрос, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ stream ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ€Π°Π·Π°.

int putchar(int c);

putchar(c) Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎΠΆΠ΅, Ρ‡Ρ‚ΠΎ putc(c, stdout).

int puts(const char *s);

puts ΠΏΠΈΡˆΠ΅Ρ‚ строку s ΠΈ символ Π½ΠΎΠ²ΠΎΠΉ строки Π² stdout. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ EOF Π² случаС ошибки, ΠΈΠ»ΠΈ Π½Π΅ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли запись ΠΏΡ€ΠΎΡˆΠ»Π° Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ.

int ungetc(int с, FILE *stream);

ungetc отправляСт символ c (ΠΏΠ΅Ρ€Π΅Π²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π² unsigned char) ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² stream; ΠΏΡ€ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΈΠ· stream ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ снова. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ символа. НСльзя Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ EOF. Π’ качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ungetc Π²Ρ‹Π΄Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π°Π·Π°Π΄ символ ΠΈΠ»ΠΈ, Π² случаС ошибки, EOF.

B1.5. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ прямого Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π°

size_t fread(void *ptr, size_t size, size_t nobj, FILE *stream);

fread Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΠΈΠ· ΠΏΠΎΡ‚ΠΎΠΊΠ° stream Π² массив ptr Π½Π΅ Π±ΠΎΠ»Π΅Π΅ nobj ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Π° size. Она Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ мСньшС заявлСнного. Для ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ†ΠΈΠΈ состояния послС чтСния слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ feof ΠΈ ferror.

size_t fwrite(const void *ptr, size_t size, size_t nobj, FILE *stream);

fwrite ΠΏΠΈΡˆΠ΅Ρ‚ ΠΈΠ· массива ptr Π² stream nobj ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€Π° size; Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число записанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π² случаС ошибки мСньшС nobj.

B1.6. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ позиционирования Ρ„Π°ΠΉΠ»Π°

int fseek(FILE *stream, long offset, int origin);

fseek устанавливаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ для stream; ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ с этой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ. Π’ случаС Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π° позиция устанавливаСтся со смСщСниСм offset - ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Ρ‡Π°Π»Π°, Ссли origin Ρ€Π°Π²Π΅Π½ SEEK_SET; ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Ссли origin Ρ€Π°Π²Π΅Π½ SEEK_CUR; ΠΈ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°, Ссли origin Ρ€Π°Π²Π΅Π½ SEEK_END. Для тСкстового Ρ„Π°ΠΉΠ»Π° offset Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π½ΡƒΠ»Π΅ΠΌ ΠΈΠ»ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΌ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ftell. ΠŸΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с тСкстовым Ρ„Π°ΠΉΠ»ΠΎΠΌ origin всСгда Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π²Π΅Π½ SEEK_SET.

long ftell(FILE *stream);

ftell Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ° stream ΠΈΠ»ΠΈ -1L, Π² случаС ошибки.

void rewind(FILE *stream);

rewind(fp) Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ fseek(fp, 0L, SEEK_SET); clearerr(fp).

int fgetpos(FILE *stream, fpos_t *ptr);

fgetpos записываСт Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠΎΡ‚ΠΎΠΊΠ° stream Π² *ptr для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ использования Π΅Π΅ Π² fsetpos. Π’ΠΈΠΏ fpos_t позволяСт Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° значСния, Π’ случаС ошибки fgetpos Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

int fsetpos(FILE *stream, const fpos_t *ptr);

fsetpos устанавливаСт ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² stream, читая Π΅Π΅ ΠΈΠ· *ptr, ΠΊΡƒΠ΄Π° ΠΎΠ½Π° Π±Ρ‹Π»Π° записана Ρ€Π°Π½Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ fgetpos. Π’ случаС ошибки fsetpos Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

B1.7. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок

МногиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² случаС ошибки ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ состояния. Π­Ρ‚ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ†Π΅Π»ΠΎΠ΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ errno (объявлСнноС Π² <errno.h>) ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ ошибки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄Π°Π΅Ρ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ послСднСй ΠΈΠ· ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ошибок.

void clearerr(FILE *stream);

clearerr ΠΎΡ‡ΠΈΡ‰Π°Π΅Ρ‚ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° ΠΈ ошибки ΠΏΠΎΡ‚ΠΎΠΊΠ° stream.

int feof(FILE *stream);

feof Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли для ΠΏΠΎΡ‚ΠΎΠΊΠ° stream установлСн ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°.

int ferror(FILE *stream);

ferror Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ссли для ΠΏΠΎΡ‚ΠΎΠΊΠ° stream установлСн ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ошибки.

void perror(const char *s);

perror(s) ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅Ρ‚ s ΠΈ зависимоС ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ сообщСниС ΠΎΠ± ошибкС, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Ρ†Π΅Π»ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ Π² errno, Ρ‚. Π΅. Π΄Π΅Π»Π°Π΅Ρ‚ Ρ‚ΠΎ ΠΆΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ fprintf Π²ΠΈΠ΄Π°

fprintf(stderr, "%s: %s\n", s, "сообщСниС ΠΎΠ± ошибкС")

Π‘ΠΌ. strerror Π² ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„Π΅ B3.

B2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ класса символа: β€Ήctype.hβ€Ί

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» <ctype.h> ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Π΅ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ символов. АргумСнт ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈΠ±ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ собой EOF, Π»ΠΈΠ±ΠΎ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ unsigned char, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΌ ΠΊ int; Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ int. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ("истина"), ΠΊΠΎΠ³Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ c удовлСтворяСт описанному ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ классу символов, ΠΈ Π½ΡƒΠ»ΡŒ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

isalnum(c) isalpha(c) ΠΈΠ»ΠΈ isdigit(c) Π΅ΡΡ‚ΡŒ истина isalpha(c) isupper(c) ΠΈΠ»ΠΈ islower(c) Π΅ΡΡ‚ΡŒ истина iscntrl(c) ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ символ isdigit(c) дСсятичная Ρ†ΠΈΡ„Ρ€Π° isgraph(c) ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΉ символ ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π° islower(c) Π±ΡƒΠΊΠ²Π° Π½ΠΈΠΆΠ½Π΅Π³ΠΎ рСгистра isprint(c) ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΉ символ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΡ€ΠΎΠ±Π΅Π» ispunct(c) ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹ΠΉ символ ΠΊΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΠ±Π΅Π»Π°, Π±ΡƒΠΊΠ²Ρ‹ ΠΈΠ»ΠΈ Ρ†ΠΈΡ„Ρ€Ρ‹ isspace(c) ΠΏΡ€ΠΎΠ±Π΅Π», смСна страницы, новая строка, Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ ΠΊΠ°Ρ€Π΅Ρ‚ΠΊΠΈ, табуляция, Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ табуляция isupper(c) Π±ΡƒΠΊΠ²Π° Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ рСгистра isxdigit(c) ΡˆΠ΅ΡΡ‚Π½Π°Π΄Ρ†Π°Ρ‚Π΅Ρ€ΠΈΡ‡Π½Π°Ρ Ρ†ΠΈΡ„Ρ€Π°

Π’ Π½Π°Π±ΠΎΡ€Π΅ сСмибитовых ASCII-символов ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π΅ΠΌΡ‹Π΅ символы находятся Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ 0x20 (' ') Π΄ΠΎ 0x7E ('~'); ΡƒΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ символы - ΠΎΡ‚ 0 (NUL) Π΄ΠΎ 0x1F (US) ΠΈ 0x7F (DEL).

Помимо пСрСчислСнных Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, приводящиС Π±ΡƒΠΊΠ²Ρ‹ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· рСгистров:

int tolower(int c) – ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ c Π½Π° Π½ΠΈΠΆΠ½ΠΈΠΉ рСгистр;

int toupper(int c) - ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΈΡ‚ c Π½Π° Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ рСгистр.

Если c - Π±ΡƒΠΊΠ²Π° Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС, Ρ‚ΠΎ tolower(c) выдаст эту Π±ΡƒΠΊΠ²Ρƒ Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ c. Если c - Π±ΡƒΠΊΠ²Π° Π½Π° Π½ΠΈΠΆΠ½Π΅ΠΌ рСгистрС, Ρ‚ΠΎ toupper(c) выдаст эту Π±ΡƒΠΊΠ²Ρƒ Π½Π° Π²Π΅Ρ€Ρ…Π½Π΅ΠΌ рСгистрС; Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΎΠ½Π° Π²Π΅Ρ€Π½Π΅Ρ‚ c.

B3. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ со строками: <string.h>

Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π΅ Π³Ρ€ΡƒΠΏΠΏΡ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… со строками. Они ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ <string.h>. ИмСна Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ с Π±ΡƒΠΊΠ² str, Π²Ρ‚ΠΎΡ€ΠΎΠΉ - с mem. Если ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π΅Π»ΠΎ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ ΠΏΠΎ памяти, Ρ‚ΠΎ, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ memmove, ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ. Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ сравнСния Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠ°ΠΊ массивы элСмСнтов Ρ‚ΠΈΠΏΠ° unsigned char.

Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π½Π° с. 321 ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ s ΠΈ t ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ Ρ‚ΠΈΠΏΡƒ char *, cs ΠΈ ct – Ρ‚ΠΈΠΏΡƒ const char *, n - Ρ‚ΠΈΠΏΡƒ size_t, Π° c - Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠ° int, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΊ Ρ‚ΠΈΠΏΡƒ char.

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ strtok Ρ€Π°Π·Π±ΠΈΠ²Π°ΡŽΡ‚ строку s Π½Π° лСксСмы. ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΡ‚Π΅Π»Π΅ΠΌ лСксСмы слуТит любой символ ΠΈΠ· строки ct. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ s Π½Π΅ Ρ€Π°Π²Π΅Π½ NULL. Ѐункция Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π² строкС s ΠΏΠ΅Ρ€Π²ΡƒΡŽ лСксСму, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· символов, Π½Π΅ входящих Π² ct; Π΅Π΅ Ρ€Π°Π±ΠΎΡ‚Π° заканчиваСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ символа ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ '\0' ΠΈ возвращаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° лСксСму. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π·ΠΎΠ², Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ s Ρ€Π°Π²Π΅Π½ NULL, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ лСксСму, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ функция Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ°Ρ‚ΡŒ сразу Π·Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ. Ѐункция strtok Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ NULL, Ссли Π΄Π°Π»Π΅Π΅ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ лСксСмы Π½Π΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΎ. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ ct ΠΎΡ‚ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊ Π²Ρ‹Π·ΠΎΠ²Ρƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°Ρ€ΡŒΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ.