Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015

Здесь есть возможность читать онлайн «Стивен Прата - Язык программирования C. Лекции и упражнения (6-е изд.) 2015» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Год выпуска: 0101, Издательство: Вильямс, Жанр: Старинная литература, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

Язык программирования C. Лекции и упражнения (6-е изд.) 2015 — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Язык программирования C. Лекции и упражнения (6-е изд.) 2015», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Резюме

Запись и чтение из файлов является важной частью большинства программ на С. Многие реализации С предлагают для этих целей службы низкоуровневого и стандартного высокоуровневого ввода-вывода.

Файловый ввод-вывод 559

Поскольку библиотека ANSI С включает стандартные, но не низкоуровневые службы ввода-вывода, стандартный пакет обладает большей переносимостью.

Стандартный пакет ввода-вывода автоматически создает буферы для ввода и вывода для ускорения передачи данных. Функция fopen() открывает файл для стандартного ввода-вывода и создает структуры данных, предназначенные для хранения информации о файле и буфере. Функция fopen() возвращает указатель на такую структуру данных, и этот указатель используется другими функциями для идентификации файла, подлежащего обработке. Функции f eof() и f error() сообщают о причине отказа операции ввода-вывода.

Ввод в С рассматривается как поток байтов. Если вы применяете функцию fread(), то ввод трактуется как двоичные значения, которые должны быть помещены в указанное место памяти. Если вы используете fscanf(), getc(), fgets() или любые родственные им функции, то каждый байт рассматривается как код символа. Функции fscanf() и scanf() затем пытаются преобразовать этот код символа в другие типы, как отражено спецификаторами формата.

Например, входное значение 23 спецификатор %f преобразует в значение с плавающей запятой, спецификатор %d — в целочисленное значение, а спецификатор %s — в строку. Семейство функций getc() и fgets() оставляет ввод в виде кодов символов и сохраняет его либо в переменных типа char как отдельные символы, либо в массивах char как строки. Подобным же образом функция fwrite() помещает двоичные данные непосредственно в выходной поток, тогда как другие функции вывода перед помещением в поток вывода преобразуют несимвольные данные в символьные представления.

Стандарт ANSI С предоставляет два режима открытия файла: двоичный и текстовый. Когда файл открыт в двоичном режиме, его можно читать байт за байтом. Когда файл открыт в текстовом режиме, его содержимое может быть отображено из системного представления текста в представление С. Для систем Unix и Linux эти два режима идентичны.

Функции ввода getc(), fgets(), fscanf() и fread() обычно читают файл последовательно, стартуя с начала файла. Тем не менее, функции fseek() и ftell() позволяют программе перемещаться в любую позицию внутри файла, делая возможным произвольный доступ. Функции fgetpos() и fsetpos() распространяют аналогичную возможность на файлы больших размеров. В двоичном режиме произвольный доступ работает лучше, чем в текстовом режиме.

Вопросы для самоконтроля

Ответы на вопросы для самоконтроля приведены в приложении А.

1. Что неправильно в следующей программе:

int main(void)

{

int * fp; int k;

fp = fopen("gelatin"); for (k = 0; k < 30; k++)

fputs(fp, "Кто-то ест студень."); fclose("gelatin"); return 0;

}

560 глава 13

2. Что делает следующая программа? (Предположите, что она запускается в среде командной строки.)

#include

#include

#include

int main(int argc, char *argv[])

{

int ch;

FILE *fp;

if (argc < 2) exit(EXIT_FAILURE);

if ( (fp = fopen(argv[1], "r")) == NULL) exit(EXIT_FAILURE); while ( (ch= getc(fp)) != EOF ) if( isdigit(ch) ) putchar(ch); fclose(fp;

return 0;

}

3. Предположим, что в программе имеются следующие операторы:

#include

FILE * fpl,* fp2; char ch;

fpl = fopen("terky", "r"); fp2 = fopen("jerky", "w");

Кроме того, предположим, что оба файла были успешно открыты. Добавьте недостающие аргументы в следующие вызовы функций:

а. ch = getc();

б. fprintf ( , "%с\n", );

в. putc ( , );

г. fclose(); /* закрыть файл terky */

4. Напишите программу, которая принимает ноль или один аргумент командной строки. Если имеется один аргумент, он интерпретируется как имя файла. Если аргумент не указан, то должен использоваться стандартный ввод (stdin). Предположите, что ввод состоит целиком из чисел с плавающей запятой. Программа должна вычислять и отображать среднее арифметическое значение для введенных чисел.

5. Напишите программу, которая принимает два аргумента командной строки. Первым аргументом является символ, а вторым — имя файла. Программа должна выводить из файла только те строки, которые содержат указанный символ.

На заметку!

Строки файла идентифицируются символом новой строки ‘\n'. Предположим, что ни одна из строк по длине не превышает 256 символов. Возможно, потребуется использовать функцию fgets().

6. В чем разница между двоичными и текстовыми файлами с одной стороны и двоичными и текстовыми потоками — с другой?

Файловый ввод-вывод 561

7. а. В чем разница между сохранением числа 8238201 с помощью fprintf() и его

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Представляем Вашему вниманию похожие книги на «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015»

Обсуждение, отзывы о книге «Язык программирования C. Лекции и упражнения (6-е изд.) 2015» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x