Автор: Пользователь скрыл имя, 22 Декабря 2011 в 21:29, курсовая работа
С++ тілінде ішкі файлдың аналогы болып ағын саналады. С++ де ағынға тип сәйкестендірілмейді. Ағын- енгізу,шығару процесінде берілетін байттық тізбек. Ағын қандай да бір сыртқы құрылғымен немесе дискідегі файлмен байланысты болу керек. С++ терминологиясында ол былайша айтылады: ағын қандайда бір құрылғыға немесе файлға бағытталуы қажет.
Курстық жұмыстың тақырыбы өте ауқымды болып келеді. Курстық жұмысты жазу барысында келесідей негізгі файлдарды ашу және жабу, файлдармен жұмысты ұйымдастыру, файлда форматты енгізу, шығару, символдарды енгізу, файлдың атын өзгерту тақырыптары қозғалмақшы.
Кіріспе.......................................................................................................................3
1.Файлдармен жұмысты ұйымдастыру
1.1 Дискідегі файлмен жұмыс ...........................................................................4
1.2 Файлмен форматтық алмастыру.................................................................5
1. 3 FILE құрылымының көмегімен файлдармен жұмыс жасау........................6
2. С++ тілінде файлдармен жұмыс
2.1 Файлдармен жұмыс жасауға арналған функциялар…....…………….........10
2.2 Файлдағы символдармен жұмыс..... ..............................................................14
2.3 Файлдар және ағымдар...................................................................................16
2.4 Мәліметтер блогын жазу және оқу................................................................18
Қорытынды......................................................................................................20
Қолданылған әдебиеттер..........................................
Символдармен енгізу-шығару функциясы операцияларында файлдан 1 символ қабылданып немесе файлға 1 символ жіберіледі.
Мысалы,
(source) бастапқы файлды (destination) көшірілетін
файлға символдап көшіру:
char ch;
FILE* source= fopen (“one”, “rb”);
FILE* destination= fopen (“two”, “wb”);
while (!feof (source))
{
ch= fgetc (source);
fputc (ch, destination);
}
Жолдармен енгізу-шығару операцияларында бір ретте файлдардан (немесе файлдарға) символдар жолдары көшіріледі.
Мысалы:
char string [256];
FILE* source= fopen (“1.txt”, “r”);
FILE* destination= fopen (“2.txt”, “w”);
fgets (string, 256, source);
fputs (string, destination);
{
ch= fgetc (source); //оқу
fputc (ch, destination); //жазу
Топтап енгізу-шығару функциясы операцияларында ақпарат блоктармен енгізіледі. Бұл функцияның ерекшелігі –енгізу-шығару жүзеге асырылатын жады аумағындағы деректердің сипаты қандай болса да бәрібір.
BOOKS
құрылымдық айнымалысын оқу
struct
{
char name [32];
char title [64];
int year;
float price;
} BOOKS;
FILE* source= fopen (“1.txt”, “r”);
FILE* destination= fopen (“2.txt”, “w”);
fread (&BOOKS, sizeof (BOOKS), 1, source); //оқу
fread (&BOOKS, sizeof (BOOKS), 1, destination); //жазу
Форматталған енгізу-шығарудың функциясының ерекшелігі –енгізген кезде жол байттарының түрленуі орындалып, арнайыландырылған айнымалылардың алынған мәндері беріледі. Шығарған кезде мәндердің қайта түрленуі жүзеге асырылып, олардың символдық бейнелері шығару ағымына орналастырылады.
Форматталған
енгізу-шығарудың мысалын
char fam [15];
char name [15];
FILE* source= fopen (“1.txt”, “r”);
FILE* destination= fopen (“2.txt”, “w”);
fscanf (source, “%s%s”, &fam, &name); //оқу
fprint (destination, “%s%s\n”,fam, name); //жазу
Файлдағы сілтегіштің орнын мына функциялардың көмегімен ауыстыруға болады:
fseek сілтегіш табысты түрде орын ауыстырса, 0-ді қайтарады, қате кеткен болса –нөлдік емес мәнді қайтарады.
Мысалдар. fseek (myfile, 3, SEEK_SET); //файл басынан 3 орынға жылжу
fseek (myfile, -3, SEEK_CUR); //файл басынан жанға 3 байтқа жылжу
fseek (myfile, 3,1); // файл соңының жанына 3 орынға жылжу
void
rewind (FILE*stream); -файлдың басына ағымдық
байттың сілтегіші қойылады. rewind
шақырылғаннан кейін файлмен
жасалатын келесі операция
2. С++ тіліндегі файлдармен жұмыс
Бұл функциялар SysUtils модулінде орналасады.
Файлдарды ашу мен жабу үшін келесі функциялар қолданылады:
Файлға деректерді енгізу-шығару келесі функциялардың көмегімен жүзеге асырылады:
Сілтегіштің орнын ауыстыру үшін келесі функциялар қолданылады:
Мысал. 1.txt атаулы файлды құрып, оны файлдар жобасы тізіміне қосады. Әрі қарай файлдағы деректерді буферге оқып, оқылған деректерді 2.txt файлына жазу керек.
void_ _fastcall Tform1:::Button1Click (TObject*Sender)
{
int FileHandle; //файл дескрипторы
int FileLength; //файл ұзындығы
int BytesRead; //оқылған байттар саны
char * Buffer; //файлға қол жеткізуді ашу
FileRead=FileOpen (“1.txt”, fmOpenRead);
if (FileHandle==-1)
{
ShowMessage (“1.txt файлын ашудағы қателік”);
exit;
}
FileLength= FileSeek (FileHandle, 0,2); //файл ұзындығын оқу
FileSeek (FileHandle, 0,0); //сілтегішті басына орналастыру
Buffer=new char [FileLength+1]; //орынды алып қою
//файлдан деректерді оқу
BytesRead= FileRead (FileHandle, Buffer, FileLength);
FileClose (FileHandle); //файлға қол жеткізуді жабу
//жаңа файлды құру
FileHandle= FileCreate (“2.txt”)
//буферден деректерді жаңа файлға жазу
int Res= FileWrite (FileHandle, Buffer, BytesRead);
FileClose (FileHandle); //файлға қол жеткізуді жабу
delete [ ] Buffer; //буферді босату
Каталогтармен және файлдармен жұмыс жасау үшін келесі функциялар қолданылады:
Файлдарды параметрлеріне қарай іздеу үшін SYSUtils.h: cипатталған құрылым қолданылады.
struct TSearchRec
{
int Time;
int Size;
int Attr;
AnsiString Name;
int FindHandle;
char [4097] FindData;
char [257] Pattern;
}
Іздеу үш функцияның көмегімен жүзеге асырылады.
Мысал. Файлдарды іздестірейік. Файлдардың аттары мен өлшемдері Memo компонентіне жазылатын болады.
void_
_fastcall Tform1:::Button1Click (TObject*Sender)
{
TSearchRec sr;
int Attr=0;
Memo1->Lines->Clear ( );
Attr| =faReadOnly;
Attr| =faHidden;
Attr| =faSysFile;
Attr| =faVolumeID;