- •Вопрос 1
- •Вопрос 2
- •2.4. Константы
- •2.4.1. Целые константы
- •2.4.2. Длинные целые константы
- •2.4.3. Символьные константы
- •2.4.4. Вещественные константы
- •2.4.5. Перечислимые константы
- •2.5. Текстовые константы
- •Вопрос 3
- •2.2. Идентификаторы (имена)
- •2.3. Ключевые слова
- •3.2. Тип
- •Вопрос 4
- •2.3. Данные целого типа
- •Вопрос 5
- •Вопрос 6
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Вопрос 7
- •3.1. Операции
- •3.1.1. Арифметические операции
- •5.2. Унарные операции
- •5.5. Операции сдвига
- •5.6. Операции отношения
- •5.7. Операции равенства
- •5.8. Побитная операция и
- •5.13. Условная операция
- •3.1.2. Операция присваивания
- •Вопрос 8
- •7.3. Условный оператор if
- •7.7. Оператор выбора switch
- •7.8. Оператор break
- •7.9. Оператор continue
- •7.10. Оператор возврата return
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •Вопрос 9
- •7.4. Оператор цилка while
- •7.5. Оператор цикла do
- •7.6. Оператор цикла for
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3.4. Применение оператора goto и меток
- •Вопрос 11
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Вопрос 12
- •12. Работа с файлами в языке c. Функции работы с файлами. Буферизованный ввод-вывод.
- •Вопрос 13
- •1.6.2. Объявления функций
- •1.6.3. Время жизни и область видимости программных объектов
- •1.6.4. Инициализация глобальных и локальных переменных
- •Вопрос 14
- •Вопрос 15
- •Вопрос 16
- •Вопрос 17
- •Вопрос 18
- •Вопрос 19
- •Вопрос 20
Вопрос 11
11. Стандартная библиотека C. Функции ввода-вывода, форматный ввод-вывод.
Стандартная библиотека C
Содержимое и форма стандартной библиотеки С задается Стандартом ANSI/ISO. Т.е. Стандарт С определяет тот набор функций, который должен поддерживать любой стандартный компилятор. Однако при этом большинство компиляторов предоставляют дополнительные функции, которые не специфицированы в Стандарте. Например, многие компиляторы имеют функции работы с графикой, подпрограммы, управляемые с помощью мышки, и другие им подобные, которых нет в Стандарте С. Пока программа не переносится в другую вычислительную среду, эти нестандартные функции можно использовать без каких-либо негативных последствий. Но если программа доллжна быть переносимой, применение таких программ нужно ограничить. На самом деле практически все нетривиальные программы С используют нестандартные функции, так что не нужно пугаться и избегать их только из-за того, что они не входят в стандартную библиотеку функций.
Функции ввода/вывода
Простейший способ выполнить чтение из файла или запись в файл – использовать функции getc() илиputc().
Функция getc() выбирает из файла очередной символ; ей нужно только знать указатель на файл, например,charSymb=getc(f_in);
Если при обработке достигается конец файла, то функция getc() возвращает значениеEOF(endoffile).
Функция putc() заносит значение символаSymbв файл, на который указываетf_out. Формат вызова функции:putc(Symb,f_out);
В этом примере для чтения из файла используется переменная ptr. При открытии файла производится проверка. Если переменнойptrприсвоено значениеNULL, то файл не найден; на экран выводится соответствующее сообщение, и программа завершается. Еслиptrполучила ненулевое значение, то файл открыт. Далее выполняется чтение символов из файла до тех пор, пока не будет достигнут конец файла (!feof(ptr)). Прочитанные символы помещаются в переменнуюch, а затем выводятся на экран.
Функции fscanf() иfprintf() выполняют форматированный ввод/вывод. Чтение из файла выполняет функцияfscanf():
fscanf(f_in,[строка формата],[список адресов переменных]);
Функция возвращает количество введенных значений или EOF.
Запись в файл осуществляет функция fprintf():
fprintf(f_out,[строка формата],[список переменных, констант]);
Возвращает количество выведенных байт (символов) или EOF.
Строка формата функций fscanf() иfprintf() формируется так же, как было описано ранее в гл. 5, посвященной консольному вводу/выводу и функциямprintf() иscanf().
Следует заметить, что вызов функции
fscanf(stdin,[строка формата],[список адресов переменных]);
эквивалентен вызову
scanf([строка формата],[список адресов переменных]);
Аналогично,
fprintf(stdout, [строка формата],[список переменных, констант]);
эквивалентно
printf([строка формата],[список переменных, констант]);
Чтение чисел из файла выполняется в переменную numbдо тех пор, пока не будет достигнут конец файла. Одновременно ведется подсчет количества прочитанных символов в переменнойcountи накопление суммы прочитанных чисел в переменнойS. ПеременныеSиcountцелые, поэтому для правильного вычисления среднего арифметического, необходимо выполнить преобразование одной из этих переменных в форматdouble
Общие замечания
Ввод/вывод информации в языке C осуществляется с помощью функций, объявленных в заголовочных файлах и, в принципе, способ их организации нас не интересует. Единственно, что необходимо знать программисту, это правила использования этих функций. Простейший способ воспользоваться функцией – написать обращение к этой функции.
Как уже отмечалось, основные функции ввода/вывода задаются в заголовочном файле stdio.h. Познакомимся с двумя полезными функциями, объявленными в этом файле и выполняющими следующие действия:
printf() – консольный вывод
scanf() – консольный ввод.
К началу главы
5.2. Функция форматированного вывода printf()
Структура (синтаксис) обращения к функции:
printf ("строка формата", арг1, арг2, …, аргN);
В качестве аргументов функции арг1…аргN используются идентификаторы переменных или выражения. Список аргументов может быть пустым.
Строка формата записывается в двойных кавычках и может содержать:
любой текст;
спецификаторы форматов (по количеству аргументов), обозначаются символом %, содержат информацию о типе выводимого значения и его модификации;
управляющие символы.
Напомним, что управляющий символ, или ESC-последовательность, формируется из символа обратной наклонной черты\, называемого в языке C escape-символом, и латинской буквы. Примеры управляющих последовательностей приведены в п. 1.3.1.
К началу главы