Лабораториялық жұмыстар, файлдарды пайдалану



Файл – сыртқы есте сақтау құрылғыларында (магниттік дискі-лерде) орналастырылған және мәлімет өңдеу, тасымалдау кездерінде біртұтас күйде қарастырылатын мәліметтер жиыны.
Файлдармен жұмыс істеу үшін оларды алдымен ашу керек, яғни файл туралы мәліметті – атын, адресін программаға белгілі ету қажет.
Си тілінде файл ашу fopen() функциясы арқылы орындалады. Ол сыртқы құрылғыдағы физикалық файлды, мысалы, А:\NUR.DAT, прог-рам¬мадағы оның логикалық атымен байланыстырады. Логикалық ат дегеніміз – файлға нұсқауыш, яғни файл туралы мәлімет сақталатын жады аймағына сілтеме жасау. Файлға нұсқауыш сипатталуы тиіс.
Сонымен, файлдармен жұмыс істегенде нұсқауыштар қолда¬ны-лады. Файл¬ға нұсқауыш мынадай түрде сипатталады:
FILE *fp;
мұндағы FILE типі – тақырыптық файлында анықталған құрылым. Бұл нұсқауышты көрсетілген файлмен сол файл ашыл¬ған-нан бастап, байланыстырып қоюға болады. Ол үшін келесі функция пайдаланылады:
fopen ("файл адресі/аты","қатынасу типі");
ол файлға нұсқауыш мәнін қайтарады немесе қате болса, NULL мәнін береді.
Мысалы, мынадай оператор орындалуы нәтижесінде
fp = fopen ("ex1.txt", "w");
жұмыс бумасындағы ex1.txt файлы оған мәлімет жазу (write) үшін ашылады, ал прог¬раммада бұл файлды fp нұсқауышы арқылы пайдаланамыз (яғни fopen() функциясы файлдың сыртқы атын оның программада қолданы¬латын ішкі логикалық атымен байланыстырады).
Сонымен, файлды ашатын fopen() функцияcының жалпы жазы-луы:

12-13 ЛАБОРАТОРИЯЛЫҚ ЖҰМЫСТАР
ФАЙЛДАРДЫ ПАЙДАЛАНУ
Файл – сыртқы есте сақтау құрылғыларында (магниттік дискілерде)
орналастырылған және мәлімет өңдеу, тасымалдау кездерінде біртұтас күйде
қарастырылатын мәліметтер жиыны.
Файлдармен жұмыс істеу үшін оларды алдымен ашу керек, яғни файл туралы
мәліметті – атын, адресін программаға белгілі ету қажет.
Си тілінде файл ашу fopen() функциясы арқылы орындалады. Ол сыртқы
құрылғыдағы физикалық файлды, мысалы, А:\NUR.DAT, программадағы оның
логикалық атымен байланыстырады. Логикалық ат дегеніміз – файлға нұсқауыш,
яғни файл туралы мәлімет сақталатын жады аймағына сілтеме жасау. Файлға
нұсқауыш сипатталуы тиіс.
Сонымен, файлдармен жұмыс істегенде нұсқауыштар қолданылады. Файлға
нұсқауыш мынадай түрде сипатталады:
FILE *fp;
мұндағы FILE типі – stdio.h тақырыптық файлында анықталған құрылым. Бұл
нұсқауышты көрсетілген файлмен сол файл ашылғаннан бастап, байланыстырып
қоюға болады. Ол үшін келесі функция пайдаланылады:
fopen ("файл адресіаты","қатынасу типі");
ол файлға нұсқауыш мәнін қайтарады немесе қате болса, NULL мәнін береді.
Мысалы, мынадай оператор орындалуы нәтижесінде
fp = fopen ("ex1.txt", "w");
жұмыс бумасындағы ex1.txt файлы оған мәлімет жазу (write) үшін ашылады, ал
программада бұл файлды fp нұсқауышы арқылы пайдаланамыз (яғни fopen()
функциясы файлдың сыртқы атын оның программада қолданылатын ішкі логикалық
атымен байланыстырады).
Сонымен, файлды ашатын fopen() функцияcының жалпы жазылуы:
fp = fopen(name,mode)
мұнда fp – файлға сілтейтін нұсқауыш; name – файлдың адресін де көрсетуге
болатын аты, көбінесе символдық тіркес арқылы жазылады; mode – файл қандай
режимде қолданылатынын көрсететін параметр, бұл да символдар тіркесімен
төмендегідей түрде жазылады:
"r" – файлды оқу үшін ашу (файл бұрын ашылған болуы тиіс);
"w" – бос файлды информация жазу үшін ашу;
"a" – файл соңына мәлімет қосып жазу үшін оны ашу;
"r+"– файлдан информация оқу және оған информация жазу үшін ашу);
"w+"– бос файлдан информация оқу және оған мәлімет жазу үшін файл ашу
(бұрын файл болса, ол өшіріледі);
"a+"– файлдан информация оқу және оның соңына информация қосып жазу үшін
ашу).
"t" – файл мәтіндік (текстік) режимде ашылады, ол rt, wt, at, т.с.с.
болып көрсетіле береді.
"b" – файл екілік режимде ашылады, rb, wb, ab, т.с.с. болып көрсетіле
береді.
Келісім бойынша файл көбінесе мәтіндік режимде ашылады.
Файлмен жұмыс істеп болған соң, оны жабу үшін келесі функция қолданылады:
fclose(файл_нұсқауышы).
Файлға мәлімет жазуоқу үшін жалпы енгізушығару функциялары тәріздес
бірсыпыра функциялар пайдаланылады:
fprintf(), fscanf(), fputs(), fgets(), getc(), putc(), fgetc(), fputc().
Бұлардың ішіндегі getc()fgetc(), putc()fputc() функциялары әрекеттері
ұқсас, айырмашылықтары тек getc() пен putc() макроанықтаулар да, aл fgetc()
және fputc() – нағыз функциялар болып табылады.
Барлық файлдық функциялар прототиптері stdio.h файлында орналасқан.
Файлдардан мәлімет жазуоқу әрекеттерін үш топқа бөлуге болады:
- символдарды енгізушығару операциялары;
- сөз тіркестері жолдарын енгізушығару операциялары;
- блок бойынша енгізушығару операциялары.
Символдарды енгізушығару операцияларында файлдан бір ғана символ оқылады
немесе оған бір символ жазылады. Мысалы:
fgetc(FILE *fp); ашылған файлдан символ оқиды.
fputc(int ch,FILE *fp); ch символы кодын файлға жазады.
Сөз тіркестері жолдарын енгізушығару операцияларында бір мәлімет алмасуы
кезінде файлдан сөз тіркесі жолдары оқылады немесе оған сөз тіркесі
жазылады. Мысалы:
gets(char *S); файлдан мәлімет байттарын '\n' символы кездескенше
біртіндеп оқиды да, оларды S тіркесіне орналастырып, '\n' символын ‘\0’
(нөл-терминатор) белгісіне айналдырады.
fgets(char *S,int m,FILE *fp); fp түрінде сипатталған файлдан
байттарды оқып, оларды '\n' символы кездескенше немесе m байт оқылып
біткенше S тіркесі мәні ретінде жазып шығады.
Блок бойынша енгізушығару операцияларында мәліметтер алмасу олардың бір
блогын толық қамтиды. Мысалы:
fread (void *ptv, int size, int n, FILE *fp);
мұнда fp файлынан әрқайсысы size байттан тұратын мәліметтің n блогы ptv
нұсқауышы көрсетіп тұрған жады аймағына оқылады (оқылатын блок үшін алдын
ала орын дайындап қою қажет).
fwrite (void *ptv, int size, int n, FILE *fp);
мұнда ptv нұсқауышы көрсетіп тұрған жады аймағында орналасқан әрқайсысы
size байттан тұратын мәліметтің n блогы ашық тұрған fp файлына жазылады.

fprintf және fscanf функцияларын пайдалану
fprintf - файлға информация жазу үшін, ал fscanf – файлдан информация
оқу үшін қолданылады. Олардың жалпы жазылу түрі:
fprintf(fp, “спецификация шаблоны”,p);
мұндағы p-өрнек;
fscanf(fp, “спецификация шаблоны”,адрес);

Мысал: Бүтін сандар тізбегін n=5 пернелерден енгізіп, оларды файлға жазу
керек болсын.
файл ашып, оған 5 сан жазу
#include stdio.h
#include conio.h
main()
{ int k,i,n=5;
char fname[]="a:\\num.txt\0";
clrscr();
FILE *fp;
fp=fopen(fname,"w");
clrscr();
printf("Енгізілген сандар %s файлына жазылады\n",
fname);
puts("Әр сан енгізілген соң, Enter басыңыз\n");
for(i=0; in;i++)
{scanf("%i",&k);
fprintf(fp,"%d ",k);
}
fclose(fp);
printf("Енгізілген сандар %s файлына жазылды\n",
fname);
getch();
}
Нәтижесі:
Енгізілген сандар a:\num.txt файлына жазылады
Әр сан енгізілген соң, Enter басыңыз
1
2
3
4
5
Енгізілген сандар a:\num.txt файлына жазылды
Файлдағы мәлімет: 1 2 3 4 5

Бес бүтін санды n=5 бұрыннан бар file1.txt файлына жазу керек, сол
файлды мәлімет қосу үшін ашып, оған 5 сан жазып, сонан соң ондағы мәліметті
оқып тексеру керек.
* файлға мәліметтер қосу *
#include math.h
#include stdio.h
#include conio.h
main()
{ int i,k=0,s=0,n=5,y,x;
char fname[]="file1.txt";
clrscr();
FILE *fp;
fp=fopen("file1.txt","at");
if ((fp=fopen(fname,"at")) == NULL)
{ printf("\nФайлды ашуда қате болды");
getch();
return(0);
}
puts("Enter арқылы бөліп, 5 сан енгізіңіз:");
for(i=1; i=n;i++)
{scanf("%i",&x);
fprintf(fp,"%d ",x);}
fclose(fp);
getch();
}
Нәтижесі:
Enter арқылы бөліп, 5 сан енгізіңіз:
11
22
33
44
55

Файлдағы мәлімет: 1 2 3 4 5 11 22 33 44 55

Дискідегі file1.txt файлын мәліметтер оқу үшін ашып, ондағы мәліметті
оқып, файлдағы тақ сандардың қанша екенін және қосындысын табу керек.

* файлдан мәліметтер оқу *
#include math.h
#include stdio.h
#include conio.h

main()
{ int i,k=0,s=0,n=5,y,x;
char fname[]="file1.txt";
clrscr();
FILE *fp;
fp=fopen(fname,"r");

* Оқу үшін файл ашу *
fp=fopen("fp","rt");

if ((fp=fopen(fname,"rt")) == NULL)
{ printf("\n Файл ашуда қате болды");
getch();
return(0);
}
puts("Файлдан оқылған сандар:");
while(!feof(fp))
{fscanf(fp,"%i",&y);
printf(" %i ",y);
if (y%2==0) {s+=y;k=k+1;}
}
fclose(fp);
printf("\nТақ сандар қосындысы s = % i,
олардың саны k=%i", s, k);
getch();
}
fgets және fputs функцияларын пайдалану
Сөз тіркестерімен жұмыс істегенде fgets және fputs функциялары
қолданылады:
fgets функциясының жалпы жазылу түрі:
fgets(нұсқауыш,MAXLEN,fp);
нұсқауыш – ЭЕМ жадындағы орынға сілтейтін нұсқауыш; MAXLEN – оқылатын
тіркестің максимальды ұзындығы; fp - файл нұсқауышы.
Мысалы:
#define L 20
main()
{
FILE *fp;
char *st[n];
fp=fopen(“stroka”,”r”);
while(fgets(st,L,fp)!=NULL)
puts (st);
}
Файлдарға сөз тіркестерін жазу үшін fputs функциясы келесі түрде
қолданылады:
status=fputs(қатар нұсқауышы,fp);
status – бүтін сан, оның мәні eof функциясында жазылады, егер fputs()
функциясы файлдың соңына шыққан болса немесе қате тапса, fputs функциясы
жазылатын жолдың соңына 0 символын жазбайды.
Төменде осы функцияларды пайдалану мысалы келтірілген.

#include stdio.h
void main ()
{
int n;
char str[50], str1[50], ch;
FILE *fp;
Файлға мәлімет жазу
fp = fopen("ex.txt","w");
puts ("Бүтін сан енгізіңіз: "); scanf("%d",&n);
fprintf (fp, "%d\n", n) ;
puts ("Символ енгізіңіз: "); ch=getchar();
putc (ch, fp);
puts ("Сөз тіркесін енгізіңіз: "); gets(str);
fputs(str, fp);
fclose(fp);
Файлдан мәлімет оқу
... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Информатика пәні дәрістер кешені
Жергілікті жүйелер топологиясы
«ИНФОРМАТИКА» ПӘНІ БОЙЫНША ӘДІСТЕМЕЛІК НҰСҚАУ
Информатика негіздері
Информатика пәні бойынша сыртқы бөлімге арналған тапсырмалар жинағы
Web торабын құруды оқыту тақырыбы
Рнр технологиясының электронды оқулығын жасау
Adove Photoshop графикалық редакторын оқытуға әдістемелік нұсқаулар
Microsoft Access мәліметтер қорының басқару жүйесінің обьектілері
Мәліметтер базасын жобалау бойынша электрондық оқулық
Пәндер