воскресенье, 3 февраля 2013 г.

[Урок 7] Работа с файлами

Теория

Работа с файлами предполагает чтение и запись в файл. Сейчас я покажу функции с помощью которых это осуществляется.

Код

#include <iostream>
#include <stdio.h>


using namespace std;

int main()
{


FILE *file;
char* file_name = "file.txt";
char load_string[50]="Stroka, kotoraya vpishetsya v file";

file = fopen( file_name, "w" ); //создаем файл с именем file.txt для записи

fputs( load_string, file ); // вносим туда строку load_string

fclose(file);//закрываем файл

file = fopen( file_name, "r" ); // открываем файл для чтения
if( file != 0 ) // если файл существует
{
fgets( load_string, 50, file );//получаем 50 символов из файла
cout << load_string; //выводим строку на экран
}
else
{
cout << "404" << endl; //если такого файла нет, то выводим 404
}
fclose(file); //закрываем


return 0;
}


Некие важные вещи


Для работы с файлами понадобится

#include <stdio.h>

Открытый файл описывается структурой FILE. При открытии файла нужно указать режим. В случае ошибки функция возвращает NULL.

FILE *pFile = fopen("Izengardjke.txt", "w");
/* r - чтение, файл должен быть
* w - запись, старое содержимое удаляется, файл создаётся
* a - дополнение в конец файла, файл создаётся
* a+ - чтение и дополнение, содержимое сохраняется.
* читать можно всё (перемещаться по файлу с помощью
* fseek(FILE*, int offset, int origin) или
* rewind(FILE*)), но при попытке записи
* указатель будет перемещаться в конец файла
*/


Запись выглядит так:

char buffer[] = "Hello, World!";
fwrite(buffer, sizeof(char), sizeof(buffer), pFile);


Чтение - так:
fread(&buffer, sizeof(char), sizeof(buffer), pFile);

И не забудьте закрыть файл.
fclose(pFile);


Записываем строку в файл по 10 символов в каждой строчке

#include <iostream>
#include <fstream>

int main()
{
char str[] = "dsfdsf sdf sdfdsf dsg sdhsfjhsfjsfjhsf sg hsfhsfhsha";
int i;

std::ofstream outfile("Text.txt");

for ( i = 0; i < sizeof(str); i++)
{
outfile << str[i];
if( i % 10 == 9)
outfile << std::endl;
}
outfile.close();
}


Комментариев нет:

Отправить комментарий