Файлове в С/C++. Библиотечни функции за работа с файлове.

Файлове в С/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();
}