«С++ тілінде программалау» пәні бойынша

Автор: Пользователь скрыл имя, 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
Қолданылған әдебиеттер..........................................

Работа содержит 3 файла

C++ Файлдармен ж?мыс.doc

— 173.50 Кб (Скачать)
  • символдармен енгізу-шығару функциясы;
  • жолдармен енгізу-шығару функциясы;
  • топтап енгізу-шығару функциясы;
  • форматтап енгізу-шығару функциясы.

    Символдармен  енгізу-шығару функциясы операцияларында  файлдан 1 символ қабылданып немесе файлға 1 символ жіберіледі.

  • int fgetc (FILE*fp) –ашылған файлдан символдарды оқу;
  • int fputc (int  ch, FILE*fp) –файлға ch символын жазу.

    Мысалы, (source) бастапқы файлды (destination) көшірілетін файлға  символдап көшіру: 

    char ch;

    FILE* source= fopen (“one”, “rb”);

    FILE* destination= fopen (“two”, “wb”);

    while (!feof (source))

    {

    ch= fgetc (source);

    fputc (ch, destination);

    }

    Жолдармен енгізу-шығару операцияларында бір ретте файлдардан (немесе файлдарға) символдар жолдары көшіріледі.

  • int fgetc (char*S, int m, FILE*fp) – fp файлдан байттарды алып, оларды S жолына ''\n'' символы кездескенше, немесе m байт болғанша жаза береді;
  • int fputc (char *S, FILE*fp) –файлға S жолдан тұратын байттарды ''\n'' символына алмастырылмайтын және файлға көшірілмейтін 0-терминатор кездескенше жаза береді.

      Мысалы:

    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);     //жазу

    Топтап  енгізу-шығару функциясы операцияларында  ақпарат блоктармен енгізіледі. Бұл  функцияның ерекшелігі –енгізу-шығару жүзеге асырылатын жады аумағындағы деректердің сипаты қандай болса да бәрібір.

  • int fread (void*ptv, int size, int n, FILE*fp) – ptv cілтегіші көрсеткен жады аумағына fp файлынан size байттардан тұратын n блоктарды көшіреді;
  • int fwrite (void*ptv, int size, int n, FILE*fp) – fp ашылған файлына ptv сілтегіші көрсеткен жады аумағынан size байттардан тұратын n блоктарды көшіреді.

    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);   //жазу

    Форматталған  енгізу-шығарудың функциясының ерекшелігі –енгізген кезде жол байттарының түрленуі орындалып, арнайыландырылған айнымалылардың алынған мәндері беріледі. Шығарған кезде мәндердің қайта түрленуі жүзеге асырылып, олардың символдық бейнелері шығару ағымына орналастырылады.

  • int fprint (FILE*stream, const char*format [,аргумент... ] –форматталған шығаруды ағымға бағыттайды. Функция аргументтерді stream ағымына шығарады. Әр аргумент үшін шығару форматы format сілтегіші анықтаған жолда беріледі. Жолда берілетін форматтардың саны аргументтер санымен бірдей болуы тиіс.
  • int fscanf (FILE*stream, const char*format, [, adr,…]) –ағымнан форматталған енгізуді жүзеге асырады.

      Форматталған  енгізу-шығарудың мысалын қарастырайық:

    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);         //жазу

    Файлдағы  сілтегіштің орнын мына функциялардың  көмегімен ауыстыруға болады:

  • int fseek (FILE*stream, long pos, int mode); -cілтегішті көрсетілген бағытта көрсетілген байттар санына ығыстырады. mode параметрі файлдағы ағымдық орынның неге қатысты саналатынын анықтайды, оның келесі символдық және сандық мәндері бар (studio.h-да орнатылған);
  • SEEK_SET немесе 0–файл басына қатысты ығысуы;
  • SEEK_CUR немесе 1 –ағымдық орынға қатысты ығысуы. Егер оң мәнді сан көрсетілген болса, алға ығысады, теріс сан болса, артқа ығысады.
  • SEEK_END немесе 2 –файл аяғына қатысты ығысуы.

    fseek сілтегіш табысты түрде орын  ауыстырса, 0-ді қайтарады, қате  кеткен болса –нөлдік емес мәнді қайтарады.

Мысалдар.  fseek (myfile, 3, SEEK_SET);        //файл басынан 3 орынға жылжу

fseek (myfile, -3, SEEK_CUR); //файл басынан жанға 3 байтқа жылжу

                                                    //ағымдық орыннан

fseek (myfile, 3,1);                // файл соңының жанына 3 орынға жылжу

  • fseek (myfile, -3, SEEK_END); //файл соңынан 3 орынға жылжу

    void rewind (FILE*stream); -файлдың басына ағымдық  байттың сілтегіші қойылады. rewind шақырылғаннан кейін файлмен  жасалатын келесі операция енгізу немесе шығару болуы мүмкін. int fsetpos (FILE*stream, const fops_t*pos); - stream файл сілтегішін жаңа орынға қояды. fsetpos сәтті аяқталғанда 0-ді қайтарады. Қате кеткен болса –нөлдік емес мәнді қайтарады. 

    2. С++ тіліндегі файлдармен жұмыс

    1. Файлдармен жұмыс жасауға арналған функциялар

    Бұл функциялар SysUtils модулінде орналасады.

    Файлдарды ашу мен жабу үшін келесі функциялар қолданылады:

  • int FileOpen (const AnsiString FileName, unsigned Mode); -файлға қол жеткізуді ашып, ашық файлдың дескрипторын қайтарады. Егер операция сәтті аяқталса, функция 1-ді қайтарады. Екінші параметр файлға қол жеткізу режимін көрсетеді. Ең жиі қолданылатын константалар:
  • fmCreate –егер файл бар болса, жазуға жол ашып береді, әйтпесе жаңасын құрады;
  • fmOpenRead –файлды оқу үшін ашады;
  • fmOpenWrite –файлды жазу үшін ашады;
  • fmOpenReadWrite –файлды оқу және жазу үшін ашады;
  • int FileCreate (const AnsiString FileName); -атауы берілген жаңа файлды құрып, ашылған файлдың дескрипторын қайтарады. Егер операция сәтті аяқталса, функция 1-ді қайтарады;
  • void FileClose (int Handle); -дескрипторы көрсетілген файлға қол жеткізуді жабады.

    Файлға  деректерді енгізу-шығару келесі функциялардың  көмегімен жүзеге асырылады:

  • int FileRead (int Handle, void*Buffer, unsigned Count) –файлдағы көрсетілген байттар санын мекен-жайы екінші параметрде көрсетілген буферге оқуды жүзеге асырады. Үшінші параметр буфердің байттармен берілген көлемін көрсетеді. Функция оқылған байттардың нақты санын қайтарады.
  • int FileWrite (int Handle, const void*Buffer, unsigned Count) –екінші параметрде мекен-жайы көрсетілген буфердің ішіндегісін жазып алады, үшінші параметр жазуға арналған байттар санын көрсетеді. Функция оқылған байттардың нақты санын қайтарады, егер қате кеткен болса, 1- қайтарылады.

    Сілтегіштің орнын ауыстыру үшін келесі функциялар қолданылады:

  • int FileSeek (int Handle, int Offset, int Origin) –ағыдық орынның сілтегіші орын ауыстырады. Функция сәтті шақырылған болса, жаңа орынды немесе -1-ді қайтарады, ығыстырылатын байттар саны үшінші параметрде беріледі. Екінші параметрдің мәндері:
  • 0 –файл басынан бастап орын ауыстырылады;
  • 1 –ағымдық орыннан бастап ауыстырылады;
  • 2 –орын ауыстыру файл соңынан басталады.

    Мысал. 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;                       //буферді босату

    Каталогтармен және файлдармен жұмыс жасау үшін келесі функциялар қолданылады:

  • bool DirectoryExists (const AnsiString Directory); -кіріс параметрімен берілген каталогтың бар-жоқтығын анықтайды. Егер бар болса, true, ал жақ болса – false деп қайтарады.
 
  • AnsiString GetCurrentDir ( ); -ағымдық каталогқа толық жолды  қайтарады.
  • Bool SetCurrentDir (const AnsiString Dir); - Dir параметрінде көрсетілген ағымдық каталогты орнатады.
  • void ChDir (const AnsiString S); -ағымдық каталогты S-та көрсетілген каталогпен алмастырады.
  • bool CreateDir (const AnsiString Dir); -жаңа каталогты құрады.
  • bool RemoveDir (const AnsiString Dir); -бос каталогты жояды.
  • bool DeleteFile (const AnsiString File Name); -файлды жояды.
  • boolRename File (const AnsiString Old Name, const AnsiString New Name); -файлдың атын өзгертеді.

    Файлдарды параметрлеріне қарай іздеу үшін SYSUtils.h: cипатталған құрылым қолданылады.

    struct TSearchRec

    {

    int Time;

    int Size;

    int Attr;

    AnsiString Name;

    int FindHandle;

    char [4097] FindData;

    char [257] Pattern;

    } 

    Іздеу үш функцияның көмегімен жүзеге асырылады.

  • int FindFirst (const AnsiString Path, int Attr, TSearchRec &F); - Attr|-да көрсетілген атрибуттары бар файлдың алғаш рет енуін іздейді. Іздеу нәтижесі үшінші параметрде көрсетілген құрылымға орналастырылады.
  • int FindNext (TSearchRec &F); - FindFirs алдыңғы функциясында көрсетілген параметрлері бар файлдың келесі енуін іздейді.
  • void FindClose (TSearchRec &F); - FindFirs көрсетілген параметрлер бойынша іздеу амалдарын аяқтайды.

    Мысал. Файлдарды іздестірейік. Файлдардың аттары мен өлшемдері Memo компонентіне жазылатын болады.

    void_ _fastcall Tform1:::Button1Click (TObject*Sender) 

    {

    TSearchRec sr;

    int Attr=0;

    Memo1->Lines->Clear ( );

    Attr| =faReadOnly;

    Attr| =faHidden;

    Attr| =faSysFile;

    Attr| =faVolumeID;

МАЗМУНЫ.doc

— 58.50 Кб (Открыть, Скачать)

титулка.doc

— 25.00 Кб (Открыть, Скачать)

Информация о работе «С++ тілінде программалау» пәні бойынша