Вівторок, 19.03.2024, 12:57
Гость

Мішатронік

Мобільна версія | Додати у вибране  | Мій профіль | Вихід | RSS |
Меню сайту
Наше опитування
Вам легко дається програмування
Всього відповідей: 2
Статистика

Онлайн всього: 1
Гостей: 1
Користувачів: 0


Закрытие файла: fclose( )

В нашем примере показано, как нужно закрывать файл:

 
fclose(in);
 

Аргумент функции является указателем на файл. Для более серьезной программы нужно смотреть, успешно ли закрыт файл. Функция fclose( ) возвращает значение 0, если файл закрыт успешно, и EOF в противном случае.

 

Текстовые файлы с буферизацией

Функции fopen( ) и fclose( ) работают с текстовыми файлами с " буферизацией ". Под буферизацией мы понимаем, что вводимые и выводимые данные запоминаются во временной области памяти, называемой буфером. Если буфер заполнился, содержимое его передается в блок, и процесс буферизации начинается снова. Одна из основных задач fclose( ) заключается в том, чтобы освободить любые частично заполненные буферы, если файл закрыт. Текстовым считается файл, в котором информация запоминается в виде символов в коде ASCII или аналогичном. Текстовый файл отличается от двоичного файла, который обычно используется для запоминания кодов машинного языка.

 

Ввод-вывод текстового файла: getc( ), putc( )

Две функции getc( ) и putc( ) работают аналогично функциям getchar( ) и putchar( ) (описанным в предыдущих лекциях). Разница заключается в том, что вы должны сообщить, какой файл следует использовать.

 
char ch;
ch=getchar( );
 

предназначена для получения символа от стандартного ввода, а

 
ch=getc(in);
 

- для получения символа от файла, на который указывает in.

 
putchar(ch);
 

выводит символ на стандартный файл вывода.

 
putc(ch,t);
 

предназначена для записи символа ch в файл, на который ссылается указатель t типа FILE.

 

Ввод-вывод файла: fprintf( ), fscanf( ), fgets( ), fputs( )

Все функции ввода-вывода, которые мы использовали в предыдущих лекциях, имеют аналоги для ввода-вывода файла. Основное отличие состоит в том, что нам нужно использовать указатель типа FILE, чтобы сообщить функциям с каким файлом им следует работать. Подобно getc( ) и putc( ) эти функции используются после функции fopen( ), открывающей файл, и передfclose( ), закрывающей его.

 

Функции fprintf( ) и fscanf( )

Эти функции ввода-вывода работают почти как printf( ) и scanf( ) (см. лекцию 4), но им нужен дополнительный аргумент для ссылки на сам файл. Он является первым в списке аргументов. Пример, иллюстрирующий обращение к этим функциям:

 
#include <stdio.h>
main( )
{
 FILE *fi;
 int age;
 fi=fopen("File","r"); /* считывание */
 fscanf(fi,"%d",&age); /* fi указывает на File */
 fclose(fi);
 fi=fopen("Data", "a"); /*дополнение*/
 fprintf(fi,"Data is %d.\n",age); 
 /*fi указывает на Data*/
 fclose(fi);
}
 

В отличие от getc( ) и putc( ) эти функции получают указатель типа FILE в качестве первого аргумента.

 

Функция fgets( )

Эта функция имеет три аргумента, в то время как gets( ) имеет лишь один. Пример ее использования:

 
/* Программа считывает файл строка за строкой */
#include <stdio.h>
#define MAX 80
main( )
{
 FILE *f1;
 char *string[MAX];
 f1=fopen("File","r");
 while (fgets(string,MAX,f1) != NULL)
 puts(string);
}
 

Мы расположили вводимую информацию в символьном массиве string. Первый из трех аргументов функции fgets( ) являетсяуказателем на местоположение считываемой строки. Второй аргумент содержит предельную длину считываемой строки. Функция прекращает работу после считывания символа новой строки или после считывания символов общим числом MAX-1, в зависимости от того, что произойдет раньше. В любом случае нуль-символ ' \0 ' добавляется в самый конец строки. Третий аргумент указывает на файл, который будет читаться. Разница между gets( ) и fgets( ) заключается в том, что gets( ) заменяет символ новой строки на ' \0 ', в то время как fgets( ) сохраняет символ новой строки. Подобно gets( ) функция fgets( ) возвращает значение NULL, если встречает символ EOF . Это позволяет нам проверить, достигли ли мы конца файла.

 

Функция fputs( )

Эта функция похожа на функцию puts( ). Оператор

 
l=fputs("Строка", fi);
 
Код Положение в файле
0 начало файла
1 текущая позиция
2 конец файла
 

Передает строку " Строка " в файл, на который ссылается указатель fi типа FILE. Конечно, сначала нужно открыть файл при помощи функции fopen( ).

 

l является целым числом, которое устанавливается в EOF, если fputs( ) встречает EOF или ошибку. Эта функция не ставит завершающий символ ' \0 ' в конце копируемой строки. В отличии от puts функция fputs( ) не добавляет символ новой строки в ее вывод.

 

Форма входа
Пошук
Друзі сайту
Календар
«  Березень 2024  »
ПнВтСрЧтПтСбНд
    123
45678910
11121314151617
18192021222324
25262728293031

Єдина Країна! Единая Страна!