Глава 11. Символьные строки и строковые функции 419
Введение в строки и строковый ввод-вывод 420
Определение строк в программе 421
Указатели и строки 429
Ввод строк 430
Создание пространства под строку 430
Неудачливая функция gets() 430
Альтернативы функции gets() 432
Функцияscanf() 438
Вывод строк 440
Функция puts() 440
Функция fputs() 441
Функция printf() 442
Возможность самостоятельного создания функций 442
Строковые функции 445
Функция strlen() 445
Функция strcat() 446
Функция strncat() 447
Функция strcmp() 449
Функции strcpy() и strncpy() 454
Функция sprintf() 459
Другие строковые функции 460
Пример обработки строк: сортировка строк 462
Сортировка указателей вместо строк 464
Алгоритм сортировки выбором 465
Символьные функции ctype.h и строки 465
Аргументы командной строки 467
Аргументы командной строки в интегрированных средах 469
Аргументы командной строки в Macintosh 469
Преобразования строк в числа 470
Ключевые понятия 473
Резюме 473
Вопросы для самоконтроля 474
Упражнения по программированию 477
Глава 12. Классы хранения, связывание и управление памятью 479
Классы хранения 480
Область видимости 481
Содержание 13
Связывание 483
Продолжительность хранения 484
Автоматические переменные 486
Регистровые переменные 490
Статические переменные с областью видимости в пределах блока 491
Статические переменные с внешним связыванием 492
Статические переменные с внутренним связыванием 496
Множество файлов 497
Спецификаторы классов хранения 498
Классы хранения и функции 501
Выбор класса хранения 501
Функция генерации случайных чисел и статическая переменная 502
Игра в кости 505
Выделенная память: malloc() и free() 509
Важность функции free() 513
Функция calloc() 514
Динамическое распределение памяти и массивы переменной длины 514
Классы хранения и динамическое распределение памяти 515
Квалификаторы типов ANSI С 517
Квалификатор типа const 517
Квалификатор типа volatile 519
Квалификатор типа restrict 520
Квалификатор типа Atomic (C11) 521
Новые места для старых ключевых слов 522
Ключевые понятия 523
Резюме 523
Вопросы для самоконтроля 525
Упражнения по программированию 526
Глава 13. Файловый ввод-вывод 531
Взаимодействие с файлами 532
Понятие файла 532
Текстовый режим и двоичный режим 532
Уровни ввода-вывода 534
Стандартные файлы 534
Стандартный ввод-вывод 535
Проверка наличия аргумента командной строки 536
Функция fopen() 537
Функции getc() nputc() 538
Конец файла 538
Функция fclose() 540
Указатели на стандартные файлы 540
Бесхитростная программа уплотнения файла 540
Файловый ввод-вывод: fprintf(), fscanf() , fgets ( ) и fputs() 542
Функцииfprintf() иfscanf() 542
Функции fgets() и fputs() 544
Произвольный доступ: f seek() Hftellt) 544
Работа функций fseek() nftell() 545
Сравнение двоичного и текстового режимов 547
14 Содержание
Переносимость 547
Функции fgetpos() иfsetpos() 548
“За кулисами” стандартного ввода-вывода 548
Другие стандартные функции ввода-вывода 549
Функция int ungetc ( int с, FILE * fр) 549
Функция int fflush() 550
Функция int setvbuf() 550
Двоичный ввод-вывод: fread() и fwrite ( ) 551
Функцияsize_t fwrite() 552
Функция size_t fread() 553
Функции int feoff FILE * f p) Hint ferror(FILE * f p) 553
Пример использования fread() и fwrite() 553
Произвольный доступ с двоичным вводом-выводом 556
Ключевые понятия 558
Резюме 558
Вопросы для самоконтроля 559
Упражнения по программированию 561
Глава 14. Структуры и другие формы данных 565
Учебная задача: создание каталога книг 566
Объявление структуры 567
Определение переменной типа структуры 568
Инициализация структуры 570
Доступ к членам структуры 570
Инициализаторы для структур 571
Массивы структур 571
Объявление массива структур 574
Идентификация членов в массиве структур 574
Анализ программы 575
Вложенные структуры 576
Указатели на структуры 577
Объявление и инициализация указателя на структуру 579
Доступ к членам но указателю 579
Сообщение функциям о структурах 580
Передача членов структуры 580
Использование адреса структуры 581
Передача структуры в качестве аргумента 582
Дополнительные возможности структур 583
Символьные массивы или указатели на char в структурах 587
Структура, указатели и malloc() 588
Составные литералы и структуры (С99) 591
Члены с типами гибких массивов (С99) 592
Анонимные структуры (C11) 594
Функции, использующие массив структур 595
Сохранение содержимого структур в файле 596
Пример сохранения структуры 597
Читать дальше