Автор: Пользователь скрыл имя, 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
Қолданылған әдебиеттер..........................................
Attr| =faDirectory;
Attr| =faArchive;
Attr| =faAnyFile;
AnsiString DirName= GetCurrentDir( )+”\\*.*;
Memo1-> Lines->Add (Dir Name);
if (FindFirst (Dir Name, Attr, sr)==0)
{
do
{
Memo1-> Lines->Add (sr.Name “ “+intToStr (sr.Size));
}
while (FindNext (sr)==0);
FindClose (sr);
}
}
Аты берілген файлды іздеу үшін келесі функциялар қолданылады:
Edit1-де аты берілген файлды ағымдық каталогтан іздеудің мысалы.
void_ _fastcall Tform1:::Button1Click (TObject*Sender)
{
//ағымдық каталогқа жолды оқимыз
AnsiString Dir Name= GetCurrentDir ( );
// Edit1-де аты берілген файлды іздейміз
AnsiString File Name= FileSearch (Edit1->Text, Dir Name);
If (File Name.IsEmpty ( ))
ShowMessage (AnsiString (“Файл табылған жоқ“)+Edit1->Text);
else
ShowMessage (AnsiString (“Файл табылды“)+File Name);
}
С++
Builder-мен жұмыс істегенде ақпаратты шығарудың
ең қарапайым нұсқасы –компоненттің
SaveToFile әдісімен жұмыс жасау.
Келесі
компоненттердің файлдағы жолдардың
элементтеріне арналған LoadFromToFile әдісі
бар:
Таңбаны енгізу үшін Си тілінде үш функция бар: getc ( ) және ( ) жалғыз таңбаларды білдіреді, ал fgetc ( ) болса таңбалардың жолдарын білдіреді. Getc ( ) және fgetc ( ) функциялары бір-бірімен ұқсасболып келеді. Getc ( ) функциясының прототипі stdio.h файлында келтірілген:
int getc (FILE *fp);
fp аргументі
– бұл енгізу ағымына
getc ( ) функциясы
клавиатурадағы символдарды
fgetc ( ) функциясы- файлдардан таңбалардың жолдарын оқу үшін fgetc () функциясы қолданылды: char fgetc (char * str, int n, PILE fp);fgetc ( ) функциясы толық бір жолды енгізе бермейді.Str аргументі – буфер көрсеткішін ұсынады,енгізілген жолды ұсынады; n –максималды сандар символы, fp – FILE структурасына көрсеткіш, файлды ашу кезінде fopen ( ) функциясынан қайтарылған.
Символды шығару функцияларының бірнеше түрлері бар атап айтсақ: putc ( ), fputc ( ), puts ( ), fputs ( ).
Putc ( ) және fputc ( ) фунциялары. Кітапханалық функциясы бірлік символда берілген шығару ағынды жазады. stdio.h берілген файлында putc ( ) функциясының келесі прототипі мынадай: int putc( int ch, FILE *fp); ch дәлелін – шығару үшін бағытталған таңба. Ол формальды түрде int типі бар, бірақ оның кіші байты шығару символында өзге функцияларда да қолданылады. fp дәлелі – файлмен ассоциацияланған ағын көрсеткіші. putc ( ) функциясы шығарылған символды және EOF функциясын қайтарады. EOF символдық тұрақты stdio.h файлында анықталып және бір мағыналы болады.
fputc ( ) фунциясы.Файлға символдардың жол жазуына арналған fputc (), кітапханалық функциясы қолданылады. Ол putc () функциясымен ұқсас. Бірақ бір айырмашылығы бар ол fputc ( ) үшін шығу ағының міндетті түрде көрсету керек. stdio.h файлында берілген прототипі мынадай:
char fputs( char *str, FILE* fp);
Нолдік символымен аяқталатын str дәлелі жолдық көрсеткішті шығарады, ал fp – FILE құрылымына көрсеткіш, файлды ашу кезінде fopen ( ) файлдардан қайтарылады. Str жолы файлға жазылады.
Rename ( ) бұл функция дисктте бар файлдың атын өзгерту үшін пайдалынады. stdio.h файлында тұрған прототиптері мынадай:
int rename (const char * old name, const char * newname);
Бұрынғы файл атына қойылған талаптарға сәйкес oldname және newname аргументтерін қанағаттандыру керек. Тағы да бір шектеу мынадан тұрады: ол екі бірдей атау дәл бір сол компьютердің логикалық дискісіне жіберілуі тиіс. Бұл тәсілмен файлдың атын өзгертуге және басқа дискіге көшіруге болмайды.
Rename ( ) функциясы ия болғанда 0 жағдайына оралады немесе жоқ болғанда –1 мәнін қабылдайды.
Қателер төмендегідей себептер бойынша шақырылуы мүмкін:
Rename ( ) функциясының қолданылуы мына қосымшада көрсетілген.
Келесі программада дискідегі файлдың атын өзгерту үшін rename ( ) функциясы қолданылады.
/ * rename ( ) функциясы арқылы файлдың атын өзгерту. * /
# include < stdio.h>
int main ( void)
{
char oldname [80], newname [80];
printf (" Enter current filename:");
gets (oldname);
printf ("Enter new name for file:");
gets (newname);
if (rename (oldname, newname)==0)’
printf ("&s has been renamed &s. \ n", oldname, newname);
else
fprintf (stderr, "An error has occurred renaming &s. \ n ", oldname);
return 0;
}
Нәтиже
Enter current filename: list 1609.c
Enter new name for file: renameit.c
List1609.c has been renamed renameit.c
Файл көшірмесін
жазуға жиі қажет болады – оның
дәл дубликаты басқа атпен
(сол атпен бірақ басқа
1.Негізгі файлды оқу үшін екілік тәртіпті ашу ( Екілік тәртіптін қажеті, ол файлдың мәтінді түрін ғана емес кез келген үлгілерді көшіруге мүмкіндік береді)
2.Екілік тәртіпте жазуға арналған файл – көшірмесін ашу.
3. Шыққан файлдан байтты оқу. Файлдың басында ашылған сілтеуіш түрлері автоматты түрде қондырылады, сол үшін арнайы оператормен қайта қондыруды ескеру керек.
4. Егер ең соңғы негізгі файлда feof ( ) функциясы табылса , онда көшіру аяқталынады.
5 Егер файлдын соңына әлі де жетпесе, файл – көшірмесін символға жазу және қайта оралу.
Си тілі кез – келген файлды жалғаспалы байттар ағымы бойынша қарастырады. Әр файл маркерлік файл соңымен немесе программада жұмыс істейтін файлдармен анықталған ерекше байтпен аяқталады. Файл ашылғанда оған тиісті ағым қойылады. Программаның орындалуының басында автоматты түрде үш файл және сонымен байланысты ағымдар ашылады. Олар: стандартты енгізу, стандартты шығару, стандартты қате. Ағымдар файлдармен программалардың мәліметтерінің арасындағы байланысты қамтамасыз етеді. Ашылған файл file құрылымының көрсеткішіне апарады. Онда файлмен жұмыс кезінде қолданатын мәліметтер жиынтығы бар. Бұл жүйе дескриптор файлынан тұрады. Әр элемент массиві файлды басқару блогынан тұрады.
Айналдыру
үшін стандартты енгізу, стандартты
шығару және стандартты ағында stdin, stbout
және stderr файлдарына сәйкес көрсеткіштердегі
қатені пайдаланады.
0 1 2 3 4 5 6 7 8 9 ... n-1
... | Файлдағы маркер соңы |
Стандартты кітапханалық көптеген функциялық оқылатын мәліметтер файлынан және көшірме мәліметтер файылынан тұрады. Функция fgetc, getchar сияқты файлдан бір символды теріп алады. Функция fgetc аргумент сияқты FILE батырмасына файл үшін көрсетіп, мәліметтер алады, содан бір символ алынып тұрады. Шақыру fgetc (stdin) бір символды stdin – стандартты енгізуде теріп алады. Осындай шақыру болып табылады. Функция fputc, putchar сияқты бір символды алып, оны жазуға тиіс. Шақыру функциясы fputc( ‘a’, stbout) ‘a’ stbout-стандартты шығару символын жазады.
Осындай шақыру эквивалент функциясы putchar (‘a’) болып табылады.
Бірнеше басқа функциялар оқу
үшін арналған мәліметтер
Файлды жою үшін remove () кітапханалық функциясы қолданылады. Оның прототипі stdio.h файлында тұрады, оны құрылымы:
int remove ( const char * filename );
Файл атына * filename айнымалысы көрсеткіш болады да, өшіруді талап етеді. Көрсетілген файл өшіру кезінде ашық болмау керек.
Егер файл өшпеген болса, онда операциондық жүйе файлды өшіреді. Del командасында орындалатын сияқты, команда қатарында Dos немесе Windows не болмаса rm командасы UNIX-те орындалады. Мұндай жағдайда remove функциясы 0 деген нәтиже береді.
Файл жоқ болған жағдайда функция – 1 деген нәтиже берсе, тек ғана оны оқуға болады, сондай-ақ программаның оған қатысы болмайды және де қателерді де қарамайды. remove.e функциясының программасы қарастырылған:
# include < stdio.h >
int main ( viod )
{
char filename [80];
printf ( “Enter the filename to delete:” ),
gets ( filename );
if (remove (filename) ==8)
printf ( “The file % 5 has been deleted \n”, filename );
else
fprintf ( stderr, “Error deleting the file % 5 ) n”, filename;
return 0;
}
Нәтиже. Enter the filename to delete:* bak
Error deleting the file *. Bak
Enter the filename
To delete: list 1414. bak