Файлове в С/C++. Библиотечни функции за работа с файлове.
1. Работа с файлове
Файловете се използват от програмистите за запис/четене на данни на/от твърдия диск или дискета. Използват се когато е необходим достъп до потребителски данни, бази данни, звукова или видео информация и други.
Работата с файл преминава през три етапа, като тази последователност трябва да се спазва в следния ред:
- отваряне;
- четене (запис);
- затваряне.
Съществуват няколко метода за работа с файлове:
- стандартни методи от високо ниво;
- стандартни методи от ниско ниво;
- поточни методи.
а) стандартни методи от високо ниво
Отваряне на файл:
FILE *fp; // fp е файлов манипулатор
fp=fopen("име_на_файл","режим");
режими за достъп до файла:
r - за четене;
w - за запис;
a - за добавяне след края на файла;
r+ - за четене и запис;
w+ - за създаване на файл;
a+ - за добавяне и промяна на файла.
Запис във файл:
char c; // един символ
putc(c,fp);
Четене от файл:
char c; // един символ
c=getc(fp);
краят на файла е символа EOF (end of file)
Позициониране във файл:
fseek (fp, позиция, тип_на_отместването);
0 - от началото на файла;
1 - спрямо текущата позиция;
2 - от края на файла.
Затваряне на файл:
fclose(fp);
Пример - прочитане на цял файл:
#include "stdafx.h"
#include "stdio.h"
main()
{
FILE *fp;
char c;
if ((fp=fopen ("c:\\c.bat","r"))==NULL)
cout << "Lipsva faila";
else
while (c!=EOF)
{
c=getc(fp);
cout << c;
}
cout <<"\n";
fclose(fp);
}
б) поточни методи - трябва да се включи библиотеката fstream.h
Отваряне на файл:
ofstream file;
file.open("име_на_файл");
Четене
ifstream file;
file.fopen("име_на_файл");
Запис
ofstream file;
file<<"примерни данни");
Затваряне на файл:
file.close();
Позициониране във файл:
file.seekg(позиция, посока);
Посоката може да бъде:
ios::beg - начало на файла;
ios::cur - текуща позиция;
ios::end - край на файла.
Получаване на текущата позиция във файл:
file.tellg() - връща текущата позиция във файла;
Пример за запис във файл:
#include "stdafx.h"
#include "fstream.h"
main()
{
ofstream file;
file.open("c:\\proba.txt");
file<<"Proba.\n";
file.close();
}
Пример за четене от файл:
#include "stdafx.h"
#include "fstream.h"
main()
{
ifstream file;
char s[20];
file.open("c:\\proba.txt");
file.getline(s,20);
cout << s;
file.close();
}
Пример за позициониране във файл:
#include "stdafx.h"
#include "iostream.h"
#include "fstream.h"
main()
{
ifstream file;
file.open("c:\\proba.txt");
file.seekg(0,ios::end);
cout<<file.tellg(); // Извежда дължината на файла
file.close();
}