Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Функции ввода-вывода, работающие с файлами




Пример

Работа с файлами данных

Для программиста открытый файл представляется как последовательность данных — считываемых данных или записываемых данных. При открытии файла с ним связывается поток. Выводимая информация записывается в поток; считываемая информация берется из потока. Когда поток открывается для ввода-вывода, он связывается со структурой типа FILE, которая определена в stdio.h. Структура содержит разнообразную информацию о файле.


При открытии файла с помощью функции /open возвращается указатель на структуру типа FILE, который можно использовать для последующих операций с файлом.

 

#include <stdio.h>    
    /^прототип функции*/
    /^находится в файле*/
    /*stdio.h*/    
FILE *fopen (name, type);    
char *name;      
char *type;      

Функция /open открывает файл, имя которого задается аргументом пате, и связывает с ним поток для выполнения операций ввода-вывода данных. Параметр type — это указатель на строку символов, определяющих способ доступа к файлу. Возвращаемое значение функции — указатель на структуру типа FILE.

Значения аргумента type следующие:

• "г" — открыть файл для чтения (файл должен существовать);

• "w" — открыть пустой файл для записи; если файл существует, то его содержимое теряется;

• "а" — открыть файл для записи в конец (для добавления); файл создается, если он не существует;

• "г+" — открыть файл для чтения и записи (файл должен существовать);

• "w+" — открыть пустой файл для чтения и записи; если файл существует, то его содержимое теряется;

• "а+" — открыть файл для чтения и дополнения, если файл не существует, то он создаётся.

Возвращаемое значение функции /open:

1) указатель на открытый поток;

2) значение NULL, если обнаружена ошибка.

Пример. Открытие существующего файла для чтения

main()

{

FILE *f; /* f - указатель на открытый поток */

char *а, *Ь; /* а и b - указатели на строки */

cL= cL • CLcLTL }

b="r";


f=fopen(a, b);

/* или более простой вариант: */ /* f= fopen("a.dat", "r"); */

Пример

 

f= fopen("a.dat" II у, II );    
/* Так лучше не прогр аммировать,* /  
/* поскольку фун кция возвращает NULL, */
/* если файл не может быть открыт .*/  
/* Лучше сделать так: */    
if { ; (if = fopen( "a.dat","г"))!= NULL )
} else        
  printf("\пОшибка открытия файла!") г

Функция /close закрывает поток или потоки, связанные с открытыми при помощи функции/ореи файлами. Закрываемый поток определяется аргументом/

 

#inc lude <stdio .h>
int fclose(f);  
FILE *f;    

Возвращаемое значение:

1) значение 0, если поток успешно закрыт;

2) EOF, если произошла ошибка.

fclose(f);

Функция feof определяет достигнут ли конец файла. Если конец достигнут, то операция чтения будет возвращать значение EOF до тех пор, пока поток не будет закрыт.

#include <stdio.h> int feof(f); FILE *f;


Возвращаемое значение:

1)0 — если конец файла не найден;

2) ненулевое значение, если достигнут конец файла.

1. Функция чтения символа из файла fgetc. Функция fgetc читает один символ из вводного потока/

 

#inc lude <stdio .h>
int fgetc(f);  
FILE *f;    

Возвращаемое значение:

1) код прочитанного символа;

2) EOF, если конец файла или ошибка.

2. Функция записи символа в файл fputc. Функция fputc записывает одиночный символ, имеющий код с, в поток / Это аналог функции putchar для работы с файлами.

 

#inc lude <stdio .h>
int fputs(c,f);  
int c;    
FILE *f;    

Возвращаемое значение:

1) код записанного символа;

2) EOF, если встретился конец файла или произошла ошибка.

Пример. Посимвольное копирование файла

 

 

 

 

#include <stdio.h>  
main () { FILE *in, *out;  
 
int c;  
if((in=fopen("in.dat","r"))! { if((out=fopen("out.dat", { while((c=fgetc(in)) =NULL)
"w"))!=NULL)
!=EOF)
fputc(c,out);  

fclose(out); fclose(in);

} else

printf("He могу открыть out.dat \n");

} else

printf("He могу открыть in.dat \n"); }

Функции fscanf и fprintf. Действия данных функций похоже на действия функций scan/ и printf, однако эти функции работают с файлами данных, и первый аргумент функций — это указатель на файл.

3. Функция fscanf читает данные из указанного потока /, выполняя форматные преобразования, и полученные значения записывает в переменные, адреса которых задаются параметрами argument.

 

#include <stdio.h>    
int fscanf(f, format string [, argument. .]);
FILE *f;    
char ^format string;    

4. Функция fprintf выполняет формальные преобразования данных и печатает последовательность символов и значений в выводной поток/

 

#include <stdio.h>    
int fprintf(f, format string[, argument. .]);
FILE *f;    
char ^format string;    

Пример. Дано два файла S.dat и Sl.dat. Необходимо считать число типа int из файла S.dat и записать его в файл Sl.dat.

 

main () г          
  FILE *S, *S1;        
  /* S — указатель на файл S.dat */
  /* SI - указатель на файл SI .dat*/
  int age;          
  S=fopen( "S.dat", и -р и );    
  Sl=fopen ("Sl.dat" и a");    

  fscanf(S, "%d", &age);  
  fclose (S);  
  fprintf(SI,"Пете - %d лет \n", age);
  fclose (SI);  
}    

Функции /gets и /puts предназначены для ввода-вывода строк, они являются аналогами функций gets и puts для работы с файлами.

5. Функция чтения строки символов из файла/gets. Функция /gets читает строку из входного потока f и помещает её в строку, адрес которой задается значением параметра s. Символы читаются из потока до тех пор, пока не будет прочитан символ новой строки '\п', который включается в строку, или пока не наступит конец потока или не будет прочитано п-\ символов. Результат помещается в s и заканчивается нулевым символом '\0'. Функция возвращает адрес строки.

 

#incl ude <std io. h>      
char *fgets (s , n, f);      
char *s;          
int г v;          
FILE *f;          
  /* f - указатель на файл */

6. Функция записи строки символов в файл /puts. Функция /puts копирует строку s в поток f с текущей позиции. Завершающий нулевой символ не копируется.

 

#inc lude <stc lio h>
int fputs 3 (S, f),  
char *s;      
FILE *f;      



Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 396; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.