русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Typedef struct


Дата додавання: 2013-12-23; переглядів: 1685.


Fwrite (ptr,size,n,fp);

Fread(ptr,size,n,fp);

Fclose (fp);

Fgets(str1, 50, fp); puts (str1);

Fclose(fp);

Fputs(str, fp);

Putc (ch, fp);

Int n;

Void main ()

Puts (st);

Main()

Getch();

Fclose(fp);

Return(0);

Getch();

Clrscr();

Main()

Getch();

Fclose(fp);

Return(0);

Getch();

Clrscr();

Main()

Getch();

Fname);

Fclose(fp);

Fname);

Clrscr();

Clrscr();

Main()

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>

{ int k,i,n=5;

char fname[]="a:\\num.txt\0";

FILE *fp;

fp=fopen(fname,"w");

printf("Енгізілген сандар %s файлына жазылады\n",

puts("Әр сан енгізілген соң, Enter басыңыз\n");

for(i=0; i<n;i++)

{scanf("%i",&k);

fprintf(fp,"%d ",k);

}

printf("Енгізілген сандар %s файлына жазылды\n",

}

Нәтижесі:

Енгізілген сандар a:\num.txt файлына жазылады

Әр сан енгізілген соң, Enter басыңыз

Енгізілген сандар a:\num.txt файлына жазылды

Файлдағы мәлімет: 1 2 3 4 5

 

Бес бүтін санды n=5 бұрыннан бар file1.txt файлына жазу керек, сол файлды мәлімет қосу үшін ашып, оған 5 сан жазып, сонан соң ондағы мәліметті оқып тексеру керек.

/* файлға мәліметтер қосу */

#include <math.h>

#include <stdio.h>

#include <conio.h>

{ int i,k=0,s=0,n=5,y,x;

char fname[]="file1.txt";

FILE *fp;

fp=fopen("file1.txt","at");

if ((fp=fopen(fname,"at")) == NULL)

{ printf("\nФайлды ашуда қате болды");

}

puts("Enter арқылы бөліп, 5 сан енгізіңіз:");

for(i=1; i<=n;i++)

{scanf("%i",&x);

fprintf(fp,"%d ",x);}

}

Нәтижесі:

Enter арқылы бөліп, 5 сан енгізіңіз:

 

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

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

/* файлдан мәліметтер оқу */

#include <math.h>

#include <stdio.h>

#include <conio.h>

{ int i,k=0,s=0,n=5,y,x;

char fname[]="file1.txt";

FILE *fp;

fp=fopen(fname,"r");

/* Оқу үшін файл ашу */

fp=fopen("fp","rt");

if ((fp=fopen(fname,"rt")) == NULL)

{ printf("\n Файл ашуда қате болды");

}

puts("Файлдан оқылған сандар:");

while(!feof(fp))

{fscanf(fp,"%i",&y);

printf(" %i ",y);

if (y%2==0) {s+=y;k=k+1;}

}

printf("\nТақ сандар қосындысы s = % i,

олардың саны k=%i", s, k);

}

fgets және fputs функцияларын пайдалану

Сөз тіркестерімен жұмыс істегенде fgets және fputs функция­лары қолданылады:

fgets функциясының жалпы жазылу түрі:

fgets(нұсқауыш,MAXLEN,fp);

нұсқауыш – ЭЕМ жадындағы орынға сілтейтін нұсқауыш; MAXLEN –оқылатын тіркестің максимальды ұзындығы; fp -файл нұсқауышы.

Мысалы:

#define L 20

{

FILE *fp;

char *st[n];

fp=fopen(“stroka”,”r”);

while(fgets(st,L,fp)!=NULL)

}

Файлдарға сөз тіркестерін жазу үшін fputs функциясы келесі түрде қолданылады:

status=fputs(қатар нұсқауышы,fp);

status –бүтін сан, оның мәніeofфункциясында жазылады, егерfputs()функциясы файлдың соңына шыққан болса немесе қате тап­са, fputsфункциясы жазылатын жолдың соңына /0 символын жазбайды.

Төменде осы функцияларды пайдалану мысалы келтірілген.

//

#include <stdio.h>

{

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();

puts ("Сөз тіркесін енгізіңіз: "); gets(str);

// Файлдан мәлімет оқу

if((fp = fopen("ex.txt","r")) != NULL)

{

fscanf (fp, "%d", &n); printf ("n=%d\n", n) ;

ch = getc (fp); putchar (ch);

}

else printf ("\nФайлдан мәлімет оқылмайды!");

}

Мұндағы fgets()функциясының екінші параметрі N – оқылатын символдар саны, оған '\0' белгісі де қосылады. Бұл функция өз жұмысын N-1 символын оқығаннан кейін немесе '\0' белгісі кездес­кенде аяқтайды. Екеуінде де сөз тіркесі соңына '\0' белгісі қосылады.fgets()функциясы оқылған сөз тіркесі адресін қайтара­ды немесе файл оқылып болғанда (не қате шықса), NULL белгісін береді.

fputs()функциясы әрекет дұрыс орындалса, соңғы оқылған символ кодын қайтарады, ал қате болса, EOF (файл соңы) белгісін береді. Бұл функция курсорды автоматты түрде келесі жолға көшірмейді.

Жоғарыдағы функциялар файл мәліметтерін біртіндеп, символ­дан соң келесі символды қарастыра отырып өңдейді. Си тілі файлдар­мен жиым сияқты жұмыс істеуге де мүмкіндік береді, яғни кез келген байтты жеке өңдеуге де болады. Файл ішіндегі белгілі бір орынды айқындау үшін мына функция қолданылады:

fseek(файлға нұсқауыш,бастапқы нүктеден ығысу, бастапқы нүкте);

Екінші аргумент типі long, оның мәні оң да, теріс те болуы мүм­кін. Ол бастапқы нүктеден қанша орынға (байтпен) ығысу керек екендігін көрсетеді. Үшінші аргумент файлдағы бастапқы нүкте орнын анықтайтын код болып табылады. Осы код үшін мынадай мәндер тағайындалған:

0 - файл басы;

1 - ағымдағы позиция;

2 - файл соңы.

Дұрыс орындалғанда, fseek() функциясы 0 мәнін береді, ал егер қате (мысалы, файлдың сол жақ шекарасынан ары аспақшы болғанда) болса, онда -1 береді.

fwrite және fread функцияларын пайдалану

Құрылымдарды пайдаланатын файлдармен жұмыс істеу кезінде fread()/fwrite()функцияларын пайдаланған ыңғайлы. Олардың жазылуы:

мұнда fp файлынан әрқайсысы size байттан тұратын мәліметтің n блогы ptv нұсқауышы көрсетіп тұрған жады аймағына оқылады (оқылатын блок үшін алдын ала орын дайындап қою қажет).

мұнда ptr нұсқауышы көрсетіп тұрған жады аймағында орналасқан әрқайсысы size байттан тұратын мәліметтің n блогы ашық тұрған fp файлына жазылады.

Осы функцияларды қолданудың бір мысалын келтірейік:

{

char author [30];

char title [50];


<== попередня лекція | наступна лекція ==>
ФАЙЛДАРДЫ ПАЙДАЛАНУ | Void main ( )


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн