жобааа. Файлдар. Енді файлдармен орындалатын функцияларды арастырайы
Скачать 18.47 Kb.
|
Файлдар Файл - бұл бір типті мәліметтердің ұйымдастырылған тізбегі. Файл талап етілген жалпы белгілері немесе қызметі бойынша құралады. Бұл мәліметтер қандай да бір информация көлемін құрайды. Массив тәрізді файл да бір типті мәліметтерден құралады, бірақ файлда оның мөлшері шектелмейді. Файлдың массивтен айтарлықтай ерекшелігі бар: файл массив тәрізді оперативті жадыда емес, сыртқы жадта да ұйымдастырылады. Бұл файлдың негізінен, өңделетін информацияны сақтау және жинақтау үшін пайдаланылатындығымен түсіндіріледі. Сондай- ақ, файлда әртүрлі анықтамалық информациялар сақталады, мысалы, сөздікте, түрліше анықтамалық кестелер. Әсіресе файлдар, мәліметтер қорын және банкін, бағдарламалар кітапханасын және компьютердің бағдарламалық қамтамасыз етілуін сақтауда кеңінен қолданылады. Жалпы, компьютердің бағдарламалық ұйымдастырылуы мен оның сыртқы құрылғыларымен байланысы осы файлдық құрылымға негізделген. Файл екі мәселені шеше алады. Кез-келген бағдарламалау тілі мәндерді келесі басқа бағдарламада пайдалану үшін сақтап, қалыптастыра алады. Атап айтқанда, информациялық жүйелерде информацияның ұзақ сақталуы талап етіледі. C++ бағдарламалау тілінде файлды оқу және файлға сақтау операцияларын орындау үшін FILE типті айнымалы көрсеткіш хабарлануы тиіс. Файлмен жұмыс істеу үшін орындалатын операцияның типіне сәйкес оны ашу қажет: мәліметтерді оқу немесе сақтау, жаңарту. Сондай-ақ, файлдың типі көрсетілуі тиіс, мысалы, мәтіндік немесе екілік файл. Файлдармен жұмыс істеу барысында қателер болуы мүмін, сондықтан FERROR функциясының көмегімен орындалу нәтижесін тексеріп отыру қажет. Мәтіндік файлдан мәліметтерді оқу fscanf, жазу fprintf функциясының көмегімен орындалады. Файлдармен жұмыс істеуді аяқтағаннан кейін оны міндетті түрде жабу қажет, ол fcolse функциясымен орындалады. Енді файлдармен орындалатын функцияларды қарастырайық. Fореn — файлды ашу функциясы. Жазылу форматы: FILE* fореn(соnst сһаг *аty, соnst сһаг *rejim) Rejim параметрімен берілген операция үшін аты көрсітілген файлды ашады. Rejim үш жағдайда бола алады: r- тек оқу үшін. Файл тек оқу үшін ашылады; w— тек жазу үшін файлды ашу. Файл тек мәліметтерді сақтау үшін ашылады. Егер файл бұрын файл бұрын ашылған болса, онда мәліметтер бұрынғы файлдың үстіне жазылады; а-мәліметтер қосу; файл мәліметгерді сақтау үшін бұрынғы файлдың соңынан ашылады. Егер файл fореn функциясымен бұрын ашылмаған болса, онда файл жаңадан құрылады. Егер файл мәтіндік файл ретінде ашылатын болса, ашу режимін анықтайтын символдық тұрақтыдан кейін t символын қосу қажет. Мысалы, wt - мәтіндік файлға жазу дегенді білдіреді. Егер файл fореn функциясымен ашылмаса, NULL мәнін береді, бұл жағдайда Fеrrоr функциясының көмегімен қатенің себебі туралы акпарат алуға болады. Файлды шығару функциясы – fprintf Алғашқы параметр ретінде көрсетілген ағынға байланысты файлды форматымен шығарады: fprintf(out, "%i\n",n); Мұндағы - оut( - логикалық файл аты, %і - форматы, n - айнымалы аты. Файлдан айнымалылардың мәнін оқу - scanf. int fscanf (File *, const char * format, spisok) ; Алғашқы параметр ретінде көрсетілген ағынға байланысты файлдан айнымалылардың мәндерін оқиды. Көрсетілген ағыннан сиволдарды оқып, оны функцияны шақыру кезіндегі көрсетілген жолға жазады – fgets Жазылу форматы: char * fgets(char * jol, int koisimvolov, FILE * agyn) Егер бірінші нөмерлі koisimvolov сиволы оқылса, онда оқу аяқталады немесе кезекті символ жаңа жолдың символы болса. Файлдан окылған жаңа жолдың символы нольдік символмен алмастырылады. Көрсетілген ағынға символдар жолын жазады – fputs Жолдың соңғы символы мен ноль символы жазылмайды. Жазылу форматы: Char * fputs(char * jol, FILE * agyn) ; Егер көрсетілген ағынмен орындалған соңғы операция қатемен аяқталса. нольдік емес мән береді - Fеrrоr. Жазылу форматы: int ferror(FILE* agyn); Егер соңғы оқу операциясын орындау нәтижесінде ағын файлдың соңына жетсе, нольдік емес мән береді -Feof. Int feof(FILE* agyn); Көрсетілген ағынды жабу – Fclose Жазылу форматы: Int fclose(FILE* agyn); Енді мысалдар қарастырайық. 1-мысал. D дискінде файл құрып оған сандарды сақтау керек. #Іnclude #include #define FNAME "D:\\book.txt\0" #defineN 5 void main () { char fname[15]=FNAME; FILE *out; int n; clrscr(); printf("File kimi"); printf("%s\n". fname); if ((out= fopen(fhame,"wt"))=NULL) { printf("Fildi ashuda kate bar"); getch(); return; } for (int i=0; i scanf("%i",&n); fprintf(out, "%i\n",n); } fclose(out); printf("%s\n",fname); getch () }; 2- мысал. Алдын-ала D дискісінде құрылып қойылған bоок файлына енгізілген мәліметтерді қосуға арналған бағдарлама құрайық. #include #include #define FNAME "D:\\book.txt\0" #define N 5 void main () { char foame[15]=FNAME; FILE *out; int n; clrscr(); printf("Filga kosu"); printf("%s\n", fname); if ((out= fopen(fhame,"at"))=-NULL) { printf("Fildi ashuda kate bar"); getch(); return; } for (int i=0; i scanf("%i",&n); fprintf(out, "%i\n",n); } fclose(out); printf("%s\n",fname); getch (); } 3-мысал. D дискісінде орналасқан bоок.tхt файлында сақталған мәліметтерді экранға шығаратын бағдарлама кұрайык. #include #include #define FNAME "D:\\book.txt\0" #defme N 5 void main () { char fname[15]=FNAME; FILE *in; char st[50]; int n; clrscr(); printf("Fildafi malimetter %s\n",fname); printf("%s\n", fname); if ((in= fopen(fname,"rt"))==NULL) { printf("Fildi ashuda kate bar"); getch(); return; } while (!feof(in)) { fscantTin, "%s",&st); printf("%s\n".st); » } fclose(in); printf("____ "); getch 0; } 4-мысал. Dдискісінде орналаскан bоок.tхt; файлындағы сандардың арифметикалық ортасын табатын бағдарлама құрайық. #include #include #define FNAME "D:\\book.txt\0" void main () { char fname[15]=FNAME; FILE *in; int a; int n=0: int s=0; Float st; clrscr(); printf("\nArifmeticalik ortasin esepteuVn"); printf("Filda tabilgan sandar %s\n". fname); if ((in= fopen(fname,"rt"))==NULL) { printf("Fildi ashuda kate bar"); getch(); return; } while (!feof(in)) { fscanf(in. "%i",&a); s+=a; n++:} fclose(in); st=(float)s/n; printf("Engizilfen sandar: %i\n",n); printf("Sandardin kosindisi: %i\n", s); printf("Arifmeticalik orta: %3.2f'.st); getch (); } Практикалық тапсырмалар Келесi форматтағы файлды қалыптастыру: M N a[1,1] a[1,2]… a[1,n] ……………………… a[n,1] a[n,2]… a[n,n] test.in атымен, берiлген файлды оқу бағдарламасын ұйымдастыру, файл мазмұнын экранға шығару. Бүтiн сандардан құралған файл берiлген. Цифрлар саны өсу ретi бойынша қойылған сандырдан тұратын жаңа файл жасау (бiрiншi – бiр таңбалы сандар, содан кейiн – екi таңбалы және т.б.). Оң және терiс сандардан тұратын файл берiлген. Алдымен терiс сандар, кейiн оң сандар орналасқан жаңа файл құру керек. |