
- •1.Интерфейс системных вызовов
- •2.Стандартная библиотека ввода/вывода
- •1.2. Системные вызовы и их особенности при работе с файлами.
- •1.2.1. Открытие файла. Системный вызов open().
- •1.2.2. Закрытие файла. Системный вызов close().
- •1.2.3. Чтение и запись из/в файл(а). Системные вызовы read() и write().
- •1.2.4. Создание файла. Системный вызов creat().
- •1.2.5. Создание жесткой ссылки. Системный вызов link().
- •1.2.6. Удаление жесткой ссылки. Системный вызов unlink().
- •1.2.7. Установка указателя в файле. Системный вызов lseek().
- •1.2.8. Дублирование существующего файлового дескриптора. Системный вызов dup().
- •1.2.9. Создание однонаправленного канала. Системный вызов pipe().
- •1.3. Стандартная библиотека ввода/вывода (stdio.H).
- •1.3.1. Особенности работы с stdio.H.
- •1.3.2. Потоки ввода/вывода.
- •1.3.3. Обзор функций библиотеки.
- •1.3.3.1. Функция fopen(). Открытие потока.
- •1.3.3.2. Функция fclose(). Закрытие потока.
- •1.3.3.9. Функции scanf() и fscanf(). Ввод данных с преобразованием формата.
- •2.3. Пример 3. Системный вызов write()
- •2.4. Пример 4. Системный вызов unlink()
- •2.5. Пример 5. Системный вызов lseek()
- •2.6. Пример 6. Stdio.H
1.3.3.2. Функция fclose(). Закрытие потока.
Функция fclose отделяет указанный поток stream от связанного с ним файла или набора функций. Если поток использовался для вывода данных, то все данные, содержащиеся в буфере, сначала записываются с помощью fflush().
При успешном завершении возвращается нулевое значение.
1.3.3.3. Функция fflush(). Сброс буферов потока.
Функция fflush принудительно записывает все буферизированные данные в устройство вывода данных или корректирует поток stream посредством определенных для него функций записи. При этом поток остается открытым.
Если аргумент stream указывает на NULL, то fflush "сбрасывает" данные всех потоков, открытых выводящим данным. При обычном завершении работы возвращается нулевое значение.
1.3.3.4. Функции getc() и gets(). Считывание символа и строки из потока.
getc() считывает очередной символ из потока stream
getchar() эквивалентна getc(stdin).
gets() считывает строку из stdin и записывает ее в буфер, на который указывает s, пока не встретится символ новой строки или EOF, которые заменяются значением '\0'. Проверка на переполнение буфера не производится.
gets() и fgets() возвращают s при удачном завершении операции и NULL при ошибке или если достигнут конец файла, а символы остались несчитанными.
1.3.3.5. Функции putc() и puts(). Запись символа и строки в поток.
putc() выводит символ c, приведенный к виду unsigned char, в поток stream. putchar(c); полностью эквивалентна putc(c,stdout).
puts() записывает строку s и завершающий перевод строки в stdout.
1.3.3.6. Функции fread() и fwrite(). Ввод/вывод для бинарного файла.
Функция fread считывает элементы данных nmemb (с размером каждого size байтов) с потока, на который указывает stream, и сохраняет их в позиции, на которую указывает ptr.
Функция fwrite записывает элементы данных nmemb (с размером каждого size байтов) в поток, на который указывает stream, при получении элементов с той позиции, на которую указывает ptr.
fread и fwrite возвращают количество элементов, успешно считанных или записанных (то есть не количество символов)
1.3.3.7. Функция fseek(). Смена положения операции в потоке.
Функция fseek устанавливает позицию следующей операции ввода/вывода в потоке, на который указывает аргумент stream. Новая позиция получается прибавлением смещения offset байтов к начальной позиции, определяемой параметром whence. Если whence определяется как SEEK_SET, SEEK_CUR или SEEK_END, то смещение будет относиться к началу файла, текущей позиции указателя или концу файла соответственно.
1.3.3.8. Функции printf() и fprintf(). Вывод данных с преобразованием формата.
Функции семейства printf выводят данные в соответствии с параметром format.
fprintf направляет данные в заданный поток вывода stream
При успешном завершении работы эти функции возвращают количество напечатанных символов.
%d |
целое десятичное число типа int (d - от decimal) |
%lf |
вещ. число типа double (lf - от long float) |
%c |
один символ типа char |
%s |
ввод строки. Из входного потока выделяется слово, ограниченое пробелами или символами перевода строки '\n'. Слово помещается в массив символов. Конец слова отмечается нулевым байтом. |